2014-07-24 31 views
13

Tôi mới sử dụng VBA và tôi đang làm việc trên một mô-đun để đọc dữ liệu từ bảng tính và tính các giá trị dựa trên các ngày từ bảng tính. Tôi đọc trong các biến như là một chuỗi và sau đó hiện đang thay đổi các giá trị cho một ngày bằng cách sử dụng CDate. Tuy nhiên tôi chỉ chạy qua DateValue và tôi đã tự hỏi sự khác biệt giữa hai hàm là gì và cái nào là tốt nhất để sử dụng.Sự khác biệt giữa DateValue và CDate trong VBA

Trả lời

22

DateValue sẽ trở lại chỉ ngày. CDate sẽ gìn giữ ngày và thời gian:

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

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

Tương tự, bạn có thể sử dụng TimeValue trở lại chỉ có phần thời gian:

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

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

Ngoài ra, như guitarthrower nói, DateValue (và TimeValue) sẽ chỉ chấp nhận String thông số , trong khi CDate cũng có thể xử lý các số. Để mô phỏng các hàm này cho các loại số, hãy sử dụng CDate(Int(num))CDate(num - Int(num)).

4

CDate sẽ chuyển đổi một số hoặc văn bản thành một ngày.

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

DateValue sẽ chỉ chuyển đổi ngày ở định dạng văn bản (chỉ) thành một ngày.

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

Cả CDate và DateValue, khi được sử dụng trong VBA, chuyển đổi một giá trị cho một ngày (dd/mm/định dạng yyyy):
1)
LstrDate = "July 24, 2014"
LDate = CDate(LstrDate)

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

Cả hai đều trả về cùng một kết quả.

Tuy nhiên DateValue trả về số sê-ri của một ngày nếu sử dụng trong mức ứng dụng (bảng tính)

+2

không biết về chức năng bảng tính, sự khác biệt. Tốt để biết. – guitarthrower

Các vấn đề liên quan