VBA中DateValue和CDate的区别

15

我是VBA的新手,正在编写一个模块来从电子表格中读取数据,并根据电子表格中的日期计算值。我将变量作为字符串读入,然后使用CDate将其值更改为日期。但是我刚刚发现了DateValue函数,想知道这两个函数之间的区别以及哪个更好用。

3个回答

34

DateValue仅返回日期。 CDate将保留日期和时间:

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

? CDate("2014-07-24 15:43:06")
24/07/2014 15:43:06 
同样,您可以使用 TimeValue 函数仅返回时间部分:
? TimeValue("2014-07-24 15:43:06")
15:43:06 

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

如guitarthrower所说,DateValue(和TimeValue)只能接受String参数,而CDate也可以处理数字。要模拟这些函数以处理数字类型,请使用CDate(Int(num))CDate(num - Int(num))


5

CDate函数可以将数字或文本转换为日期。

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

DateValue函数可将文本格式的日期转换为日期格式。

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

3

CDate和DateValue在vba中都用于将值转换为日期(dd/mm/yyyy格式):
1)
LstrDate = "2014年7月24日"
LDate = CDate(LstrDate)

2)
LDate = DateValue("2014年7月24日")

两者返回的结果相同。

然而,如果在应用程序级别(电子表格)中使用DateValue,则会返回日期的序列号。


2
不知道电子表格函数的区别,好好知道一下。 - guitarthrower

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接