Date Literale (z.B. #04/02/2001#)

Hallo,

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?

Dim d As Date
Dim T, M, J
 T = 2
 M = 4
 J = 2001
 d = ???
 MsgBox d

Danke!
Kristian

Hallo,

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.

Wenn nur alles so einfach wäre … :wink:
Roland

Hallo Roland,

> 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 :wink:
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

Kristian

Wozu dann ein Datums-Literal - nimm doch DateSerial, dann kannst du dir die Eierei sparen!

Reinhard

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.

Danke!
Kristian