Wandelt eine Zahl (auch Unixtimestamps) in ein Datum.
Für die Ausgabe der Resultate verwendete ich die Funktion [VBA] print_r().
'Ein Unix-Timestamp (1970) d numToDate(1446460704,,ntdUnixTimestamp) <Date> 02.11.2015 10:38:24 'Tage seit dem Microsoft-Null (1900) d numToDate(52158, "d") <Date> 19.10.2042
Attribute VB_Name = "cast_numToDate" '------------------------------------------------------------------------------- 'File : cast_numToDate.bas ' Copyright mpl by ERB software ' All rights reserved ' http://wiki.yaslaw.info/dokuwiki/doku.php/vba/cast/numtodate 'Environment : VBA 2007 + 'Version : 1.0.2 'Name : numToDate 'Author : Stefan Erb (ERS) 'History : 04.08.2014 - ERS - Creation ' 05.09.2014 - ERS - Vorzeichen korrigiert ' 19.10.2015 - ERS - cDec() hinzugefügt '------------------------------------------------------------------------------- Option Explicit Private Const C_UNIX_START As Date = #1/1/1970# 'Januar 1 1970 00:00:00 Public Enum ntdInputType ntdDefault 'DateDadd() auf Das Jahr 1900 ntdUnixTimestamp 'DateAdd auf das Jahr 1970 ntdDouble 'Das Datum ist im Format cdbl(date) End Enum '/** ' * @param variant (Decimal) Zahl die gewandelt werden soll ' * @param String Interval. Um was es sich bei der Zahl handelt (wird bei ntdDouble ignoriert). Analog zu DateAdd() ' * @param ntdInputType Spezifikation was die Augangslage ist. ' * @return Date ' */s Public Function numToDate(ByVal iNumber As Variant, Optional ByVal iInterval As String = "s", Optional ByVal iInputType As ntdInputType = ntdDefault) As Date Dim num As Variant: num = CDec(iNumber) Select Case iInputType Case ntdUnixTimestamp: numToDate = DateAdd(iInterval, num, C_UNIX_START) Case ntdDouble: numToDate = CDate(num) Case Else: numToDate = DateAdd(iInterval, num, 0) End Select End Function