2016-07-06 6 views
0

Die Formelfunktion von = DATEVALUE und VBA's DateValue() liefern exklusive Ergebnisse. Wie kann ich ein Datum in VBA formatieren, um die gleiche Serialisierung zu erhalten, als wenn ich = DATEVALUE verwende?VBA Äquivalent von DATEVALUE?

Beispiel:1/19/2016, formatierte "m/d/yyyy", kehrt 42388 durch =DATEVALUE()

+0

ich nur jeden von ihnen auf einem gültigen Datum Zeichenfolge getestet. Beide lieferten die gleichen Ergebnisse. Sie könnten zum Beispiel 'Format ('date_string', 'mm-dd-yyyy')' 'versuchen. –

+0

@ScottHoltzman - Ich konnte nicht klarstellen; Mit Serialisierung meine ich etwas in der Art, wie das Datum '1/19/2016'' 42388' wird. –

+0

Ändern Sie einfach das NumberFormat der Zielzelle in '" General "' –

Antwort

3

Verwendung CLng z.B.

=DATEVALUE("7/7/16") 

Returns

42558 

In VBA:

? CLng(DateValue("7/7/16")) 
42558 
+0

Fantastisch. Vielen Dank! –

1

Mehrere Möglichkeiten, dies zu tun. @Robin hat einen guten. Ich werde ein

?DateDiff("d",0, "7/7/16") 
42558 

Die DateDiff Funktion berechnet die Differenz zwischen den beiden Daten (2. und 3. Parameter) in den Einheiten des ersten Parameters mehr hinzuzufügen. Also, wenn Sie "d" zu "h" geändert würden Sie die Anzahl der Stunden zwischen 0 (dem ersten möglichen Zeitpunkt in Excel/VBA) erhalten und 7/7/2016

+0

Sehr interessant - wie geht das? –

+0

@sirius_pain siehe meine Bearbeitung für mehr – Brad