VBA IsNumeric进入WILD

时间:2016-08-30 10:06:34

标签: excel vba excel-vba isnumeric

请解释为什么以下代码随机行为

以下代码行返回TRUE时应返回FALSE

?Isnumeric("555-")

另外

?Isnumeric("555-"/2)返回TRUE

请解释IsNumeric的随机行为?

3 个答案:

答案 0 :(得分:7)

尽管有点深奥,尾随减号是有时在会计包中使用的有效数字格式。我想它现在用得不那么多了。它表示负数,例如555-是-555。你的第二个例子是有效的,因为-555(或555-)可以除以2,即-227.5(或227.5 - )。

您可以在Excel界面中看到它允许格式作为文本到列的一部分:

enter image description here

此外,您可以设置数字格式以使用尾部否定:

#,##0;#,##0-

请参阅此blog-post

答案 1 :(得分:3)

来自Microsoft

  

如果Expression的数据类型为Boolean,Byte,Decimal,Double,Integer,Long,SByte,Short,Single,UInteger,ULong或UShort,或者包含其中一种数字类型的Object,则IsNumeric返回True。如果Expression是可以成功转换为数字的Char或String,它也会返回True。

     

如果Expression的数据类型为Date或数据类型为Object且不包含数字类型,则IsNumeric返回False。如果Expression是无法转换为数字的Char或String,则IsNumeric返回False。

答案 2 :(得分:2)

看起来它将“555-”解释为-555。 检查IsNumeric后,您可能会检测到这种情况:

Cstr(CLng("555-")) = "555-"