Verstehe ich es korrekt, dann soll entschieden werden ob in der Zelle ein Datum/Uhrzeit steht oder nicht. Das kann man natürlich über NumberFormat versuchen herauszufinden, ist aber nicht ganz so trivial wie man meint, denn ein Datum kann man unterschiedlich formatiert darstellen und dann ist auch NumberFormat jedesmal anders aufgebaut.
Daher würde ich ehern hierzu tendieren:
Dim rng As Excel.Range
Dim bIsDateTime As Boolean
Set rng = Cells(x, 2)
On Error Resume Next
bIsDateTime = IsDate(CDate(rng))
On Error GoTo 0
If bIsDateTime Then
MsgBox "Datum : " & Format$(CDate(rng), "dd.mm.yyyy") & vbNewLine & _
"Uhrzeit : " & Format$(CDate(rng), "hh:mm:ss")
Else
MsgBox "kein Datum/Uhrzeit"
End If
Zu beachten ist jedoch, das dabei ggf. Datum oder Uhrzeit - wenn es fehlt - hinzugefügt wird. Am Datum kann man das noch relativ gut erkennen, bei der Uhrzeit vielleicht schon mehr so ganz.
Wie man es handhabt, ist davon abhängig was für Daten zu erwarten sind. Werden die zu betrachtenden Daten von einem anderen Algorithmus generiert und unterliegen daher gewissen Formatierungsregeln, dann kann man auch den Weg über NumberFormat gehen, da man dann "wissen müsste" was für Formate auftreten können. In jenem Fall müsste man sich dann also mal das Format ausgeben lassen. Auf das Format "dd.mm.yyyy" zu prüfen wird standardmäßig wohl nicht funktionieren, da Excel scheinbar selbst automatisch das NumberFormat "m/d/yyyy" für ein Datum als Voreinstellung verwendet.
Gruß
|