VBA Double类型的判定
VBA Double类型的判定
VBA double类型不能用等于来判定
今天在处理一个数据值判定时遇到的问题,即在Excel里面有一个位数很多的数值。由于一些逻辑设定,我需要让它和另外一个值去判定是否相等。结果即使debug.print(x)出来的值是一样,在循环判定也不判定相等。
和Chatgpt讨论了一下。给出的建议是设定一个很小的值,然后用两个对比的值的差和设定值比较来判定是否相等。范例如下:
1 | Dim num1 As Double |
修改逻辑
- 尝试使用类型函数转换
传入的数据有字符型或者数值型。所以第一想法是判定数值型然后将数值型转换为字符型再进行比较。用到的两个函数。
1 | VarType(data) 判断变量类型 返回的是数值,其中5是double类型 |
在实际执行过程中,发现转换后的值依然存在问题,即excel会自动将类似数值的数据转换为科学计数法
- 强制类型转换
这个方法在excel里面也经常使用,即当我们输入很长一段数字,比如身份证件号码时,我们可以在前面加’
单引号,Excel自动转化为文本格式。所以逻辑为判定为数值,则加单引号。
1 | If VarType(Range("E" & i)) = vbDouble Then |
评论
评论插件加载失败
正在加载评论插件