2014-07-24 8 views
13

Jestem nowy w VBA i pracuję nad modułem do odczytu danych z arkusza kalkulacyjnego i obliczam wartości na podstawie dat z arkusza kalkulacyjnego. Odczytuję zmienne jako łańcuch, a następnie zmieniam wartości na datę przy użyciu CDate. Jednak właśnie natknąłem się na DateValue i zastanawiałem się, jaka jest różnica między tymi dwiema funkcjami i która z nich jest lepsza do użycia.Różnica między DateValue i CDate w VBA

Odpowiedz

22

DateValue powróci tylko datę. CDate zachowa datę i czas:

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

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

Podobnie można użyć TimeValue wrócić tylko część czasu:

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

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

Ponadto, jak mówi guitarthrower, DateValue (i TimeValue) przyjmuje tylko String parametry , podczas gdy CDate może również obsługiwać liczby. Aby emulować te funkcje dla typów liczbowych, użyj CDate(Int(num)) i CDate(num - Int(num)).

4

CDate skonwertuje liczbę lub tekst na datę.

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

DateValue skonwertuje datę w formacie tekstowym (tylko) na datę.

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

Zarówno cdate i DateValue, stosowany w vba konwertuje wartość do Data (dd/mm/rrrr Format)
1)
LstrDate = "July 24, 2014"
LDate = CDate(LstrDate)

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

Oba zwracają ten sam wynik.

Jednak DateValue zwraca numer seryjny daty, jeżeli są stosowane w poziomie aplikacji (kalkulacyjnym)

+2

nie wiedział o funkcji arkusza kalkulacyjnego, różnica. Dobrze wiedzieć. – guitarthrower

Powiązane problemy