es gibt die Möglichkeit, eine Date-Variable mit Hilfe eines
Date-Literals zu initalisieren:
Dim d As Date
d = #04/02/2001#
MsgBox d
So weit, so gut. Aber: Kriege ich die Zuweisung auch irgendwie
hin, wenn ich Tag, Monat und Jahr in jeweils einer Variable
habe?
Servus Kristian
Dim d As Date
Dim T, M, J
T = 2
M = 4
J = 2001
**d = CDate(Str(t) + "/" + Str(m) + "/" + Str(j))**
MsgBox d
Also allgemein gesagt: zuerst die einzelnen Teile zu einem String zusammenbauen, der von VB als Datum interpretiert werden kann und diesen String dann mit der Funktion CDATE in einen Datumswert umwandeln.
> Dim d As Date
> Dim T, M, J
> T = 2
> M = 4
> J = 2001
> **d = CDate(Str(t) + "/" + Str(m) + "/" + Str(j))**
> MsgBox d
das ist eine Lösung, stimmt. Hatte ich auch noch rausgekriegt, nachdem VBA sich entschieden hatte, nicht mehr rumzuspinnen
Problem dabei: CDate interpretiert die Reihenfolge immer im Sinne der eingestellten Sprache. Deine Version funktioniert also nicht, wenn Englisch eingestellt ist. Deshalb soll man ja die Literale verwenden, weil die immer gleich interpretiert werden.
Meine Lösung (wackelig zwar, aber immerhin) ist diese:
'Test Date Setting (German/English)
German = (CDate("02.04.2001") = #4/2/2001#)
'Else it should be English. Hopefully it is!
If German Then
Date = CDate(d & "." & m & "." & y)
Else
Date = CDate(m & "." & d & "." & y)
End If
Wozu dann ein Datums-Literal - nimm doch DateSerial, dann
kannst du dir die Eierei sparen!
Reinhard
Ja, das ist natrlich genau das, was ich brauchte.
Blöderweise steht das nicht unter „See also“ in
der Hilfe zu Date und CDate. So konnte man es
schlecht finden.