Nic*_*las 7 excel vba excel-vba excel-formula
假设单元格A1有一个日期:1/1/2017.
然后下面的宏给出了不同的结果:
这种差异的原因是什么?我该如何正确使用IsNumeric?
Sub TestIsNumber()
MsgBox WorksheetFunction.IsNumber(Cells(1, 1))
MsgBox WorksheetFunction.IsNumber(Cells(1, 1).Value)
End Sub
Run Code Online (Sandbox Code Playgroud)
这是.Value对.Value2
将单元格格式化为日期时,.Value将其转换为Variant/Date数据类型,同时.Value2返回其嵌入的数字编号(Variant/Double)..Value2要么返回字符串,数字或错误变体.它不会转换为日期或货币.
.Value2是推荐的读取单元格值的方法,使用它来始终具有日期的数字表示,这更快,并且仍然允许您在VBA中操作它(将其与另一个日期进行比较,将其转换回Date数据类型等等).
请注意,该版本WorksheetFunction.IsNumber(Cells(1, 1))调用了Array versionExcel IsNumber(它与C++中的函数重载类似,并且调用了最佳匹配的重载).因此,Range Object作为参数发送到函数,而不是它.Value(.value这里没有发生隐式调用).Excel在嵌入式上工作,.Value2就像您键入=IsNumber(A1)另一个TRUE在Excel 中返回的单元格一样.
| 归档时间: |
|
| 查看次数: |
800 次 |
| 最近记录: |