Dim MyVar, MyCheck
MyVar = 53                    '赋值。
MyCheck1 = IsNumeric(MyVar)    ' 返回 True。
MyVar = "459.95"              ' 赋值。
MyCheck2 = IsNumeric(MyVar)    ' 返回True。
MyVar = "45 Help"             ' 赋值。
MyCheck3 = IsNumeric(MyVar)    ' 返回 False。
If (IsNumeric (MyCheck1)) Then
    MsgBox("aa")
End If
If (IsNumeric (MyCheck2)) Then
    MsgBox("bb")
End If
If (IsNumeric (MyCheck3)) Then
    MsgBox("cc")
End If
我想判断是否为数字,为什么3个if语句中的MsgBox都显示出来了????

解决方案 »

  1.   

    因为 IsNumeric(True) 或 IsNumeric(False) 的返回值都是 True
      

  2.   

    上面的发错了,应该是这样
    Dim MyVar, MyCheck1,MyCheck2,MyCheck3
    MyVar = 53                    '赋值。
    MyCheck1 = IsNumeric(MyVar)    ' 返回 True。
    MyVar = "459.95"              ' 赋值。
    MyCheck2 = IsNumeric(MyVar)    ' 返回True。
    MyVar = "45 Help"             ' 赋值。
    MyCheck3 = IsNumeric(MyVar)    ' 返回 False。
    If MyCheck1 Then
        MsgBox("aa")
    End If
    If MyCheck2 Then
        MsgBox("bb")
    End If
    If MyCheck3 Then
        MsgBox("cc")
    End If
      

  3.   

    因为这里的MyCheck1,MyCheck2,MyCheck3是True 或者 False,VB里面,True用-1表示,False用0表示,你可以试试msgbox True + 1
      

  4.   

    MyVar1 = 53                    '赋值。
    MyCheck1 = IsNumeric(MyVar1)    ' 返回 True。
    MyVar2 = "459.95"              ' 赋值。
    MyCheck2 = IsNumeric(MyVar2)    ' 返回True。
    MyVar3 = "45 Help"             ' 赋值。
    MyCheck3 = IsNumeric(MyVar3)    ' 返回 False。
    If IsNumeric(MyVar1) Then
        MsgBox("aa")
    End If
    If IsNumeric(MyVar2) Then
        MsgBox("bb")
    End If
    If IsNumeric(MyVar3) Then
        MsgBox("cc")
    End If改成这样aa    bb    cc    都会弹出来,为什么呢?
      

  5.   

    这里面:
    IsNumeric   (True)   和IsNumeric   (False)   都为True
    直接将53,459.95,
    45   Help 付给MyCheck1,2,3应该就可以了
      

  6.   

    IsNumeric("45 Help")应该为False,我这边没有弹出啊...
      

  7.   

    IsNumeric   (MyCheck3)
    根据你前面的计算结果,括号里面的都是True或者False
    而VB里面true,false实际上是代表了数字0,-1(好像是这两个数,很久了记不太清了)
    所一,肯定是数字,返回值三个档然都是true了你在if 后面应该去掉IsNumeric直接写MyCheck3就可以了
      

  8.   

    大家好,我是楼主,按照大家说的我改成下面的了。我是在windows 2003下,新建了一个vbs脚本
    内容MyVar1 = 53                    '赋值。
    MyCheck1 = IsNumeric(MyVar1)    ' 手册上说这里返回 True。
    MyVar2 = "459.95"              ' 赋值。
    MyCheck2 = IsNumeric(MyVar2)    ' 手册上说这里返回True。
    MyVar3 = "45 Help"             ' 赋值。
    MyCheck3 = IsNumeric(MyVar3)    ' 手册上说这里返回 False。
    If IsNumeric(MyVar1) Then
        MsgBox("aa")
    End If
    If IsNumeric(MyVar2) Then
        MsgBox("bb")
    End If
    If IsNumeric(MyVar3) Then '这里为什么会等于true呢???????
        MsgBox("cc") '照理说不应该弹出来,但是我运行时弹出来了
    End If
      

  9.   

    貌似得写成if isnumeric(myvar3) = true then....
      

  10.   

    MyVar1 = 53                    '赋值。 
    MyCheck1 = IsNumeric(MyVar1)    ' 手册上说这里返回 True。 
    MyVar2 = "459.95"              ' 赋值。 
    MyCheck2 = IsNumeric(MyVar2)    ' 手册上说这里返回True。 
    MyVar3 = "45 Help"             ' 赋值。 
    MyCheck3 = IsNumeric(MyVar3)    ' 手册上说这里返回 False。 
    If IsNumeric(MyVar1) Then 
        MsgBox("aa") 
    End If 
    If IsNumeric(MyVar2) Then 
        MsgBox("bb") 
    End If 
    If IsNumeric(MyVar3) Then '这里为什么会等于true呢??????? 
        MsgBox("cc") '照理说不应该弹出来,但是我运行时弹出来了 
    End If我也是2003,把你的内容原样复制到一文本文件里并改名为123.VBS后,双击只出现AA与BB两个提示框.检查你自己的环境.
      

  11.   


    我也试过,这段代码作为.vbs脚本文件,只弹前两个消息框。
    但在Office的VBA宏中运行,则会弹出三个消息。
      

  12.   

    楼主用什么开发工具啊?你的代码没错啊!只弹出“aa”和“bb”嘛!
      

  13.   

    我系统2003
    也只弹出“aa”和“bb”