2014-07-24 19 views
13

Ich bin neu in VBA und ich auf einem Modul arbeitete in Daten aus einer Tabelle zu lesen und Werte aus der Tabelle basierend auf Daten zu berechnen. Ich lese die Variablen als String ein und ändere dann die Werte mit CDate in ein Date. Ich bin aber gerade über DateValue gestolpert und ich habe mich gefragt, was der Unterschied zwischen den beiden Funktionen ist und welcher der bessere ist.Unterschied zwischen DatWert und CDate in VBA

Antwort

22

DateValue wird nur das Datum zurück.

? DateValue("2014-07-24 15:43:06") 
24/07/2014 

? CDate("2014-07-24 15:43:06") 
24/07/2014 15:43:06 

Ebenso können Sie TimeValue nur den Zeitteil zurück verwenden: CDate wird das Datum und die Zeit bewahren

? TimeValue("2014-07-24 15:43:06") 
15:43:06 

? TimeValue("2014-07-24 15:43:06") > TimeSerial(12, 0, 0) 
True 

Auch als guitarthrower sagt, DateValue (und TimeValue) akzeptiert nur String Parameter , während CDate Zahlen ebenso behandeln kann. Verwenden Sie CDate(Int(num)) und CDate(num - Int(num)), um diese Funktionen für numerische Typen zu emulieren.

4

CDate wird eine Zahl oder Text in ein Datum umwandeln.

CDate(41035) 'Converts to a date of 5/6/2012 
CDate("1/15/2014") 'Converts to a date of 1/15/2014 

DateValue wird Datum im Textformat (nur) zu einem Datum konvertieren.

DateValue("1/15/2014") 'Converts to a date of 1/15/2014 
DateValue(41035) 'Throws a mismatch error 
2

Sowohl CDate und DatWert, wenn in Vba verwendet, wandelt einen Wert zu einem Datum (tt/mm/jjjj Format):
1)
LstrDate = "July 24, 2014"
LDate = CDate(LstrDate)

2)
LDate = DateValue("July 24, 2014")

Beide geben das gleiche Ergebnis.

Allerdings gibt DatWert die Seriennummer eines Datums verwendet, wenn in der Anwendungsebene (Tabelle)

+2

wusste nicht über die Tabellenfunktion, Unterschied. Gut zu wissen. – guitarthrower