Rya*_*man 14 excel vba excel-vba
我是VBA的新手,我正在开发一个模块,用于从电子表格中读取数据,并根据电子表格中的日期计算值.我将变量读入String,然后使用CDate将值更改为Date.然而,我刚刚遇到DateValue,我想知道这两个函数之间的差异是什么,哪个是更好的使用.
Che*_*hel 24
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
Run Code Online (Sandbox Code Playgroud)
同样,您可以使用TimeValue仅返回时间部分:
? TimeValue("2014-07-24 15:43:06")
15:43:06
? TimeValue("2014-07-24 15:43:06") > TimeSerial(12, 0, 0)
True
Run Code Online (Sandbox Code Playgroud)
此外,正如guitarthrower所说,DateValue(和TimeValue)只接受String参数,同时CDate也可以处理数字.要为数字类型模拟这些函数,请使用CDate(Int(num))和CDate(num - Int(num)).
CDate 将数字或文本转换为日期。
CDate(41035) 'Converts to a date of 5/6/2012
CDate("1/15/2014") 'Converts to a date of 1/15/2014
Run Code Online (Sandbox Code Playgroud)
DateValue 将文本格式的日期(仅)转换为日期。
DateValue("1/15/2014") 'Converts to a date of 1/15/2014
DateValue(41035) 'Throws a mismatch error
Run Code Online (Sandbox Code Playgroud)