VBA IsNumeric去野外
请解释为什么下面的代码是随机的
当下面的代码行返回TRUE
时返回FALSE
?Isnumeric("555-")
也
?Isnumeric("555-"/2)
返回TRUE
请解释一下IsNumeric
随机行为?
尽pipe它有点深奥,尾部减号是有时在会计包中使用的有效数字格式。 我猜这个现在用的太less了。 它表示一个负数,例如555-是-555。 你的第二个例子工作,因为-555(或555-)可以除以2即-227.5(或227.5-)。
您可以在Excel UI中看到它允许格式作为“文本到列”的一部分:
另外,你可以设置一个数字格式来使用尾部负数:
#,##0;#,##0-
看到这个博客文章 。
来自微软 :
如果Expression的数据types是Boolean,Byte,Decimal,Double,Integer,Long,SByte,Short,Single,UInteger,ULong或UShort,或者包含这些数字types之一的对象,则IsNumeric返回True。 如果expression式是可以成功转换为数字的字符或string,它也会返回True。
如果expression式的数据types为Date或数据types为Object并且不包含数字types,则IsNumeric返回False。 如果expression式是不能转换为数字的字符或string,则IsNumeric返回False。
看起来它把“555-”解释为-555。 在检查IsNumeric之后,您可能会像这样检测到这种情况:
Cstr(CLng("555-")) = "555-"