如何确定变量是否是VBA中的整数?

Ren*_*ger 6 excel vba excel-vba access-vba

我正在寻找一个优雅的解决方案来确定变量是否是VBA中的整数.不幸的是,如果变体是从字符串创建的,我就被卡住了.这是一个小测试脚本:

dim v as variant
v = "42"
if v <> round(v) then
   msgBox("<>")
end if
Run Code Online (Sandbox Code Playgroud)

这里,msgBox会弹出,可能是因为变量是从字符串创建的,尽管我希望v是= round(v).

Phi*_*ier 9

你应该写一些类似的东西:

if cDbl(v) <> round(cDbl(v)) Then
Run Code Online (Sandbox Code Playgroud)

其中cDbl是将任何数据转换为双类型数字的函数.在调用cDbl函数之前,您可能必须处理使用isNumeric()函数无法将v转换为数字的情况.您甚至可以使用cInt函数进行比较:

if isnumeric(v) then
    if cDbl(v) - cInt(v) <> 0 Then
    ....
    endif
else
   debug.print "data cannot be converted to a number"
endif
Run Code Online (Sandbox Code Playgroud)

  • ......我还应该补充一点,在发布有关stackoverflow的答案和评论时,我不会放弃我的任何权利,其中包括捍卫我的立场的权利!对不起,但我真的觉得你的'冒犯'的位置相当过分.如果你有比我更好的答案或建议,你为什么不发布它? (6认同)
  • -1用于防守而不是改进.如果您只使用Clng而不是CInt,则示例很好 (2认同)
  • 阅读评论后@PhilippeGrondier我很失望,人们敢于向你提供优秀的答案.你本着我需要的精神回答了我的问题,我完全满意. (2认同)