if f="" or b ="" then
   msgbox "错误"
else
   msgbox "正确"
end if

解决方案 »

  1.   

    if f or b="" then
       ^这个f表示f=True你的语句的完整表达式为:
    if f=true or b="" then而f是string类型,不是布尔(Boolean)型的,所以出错了
      

  2.   

    第三个例子中错误是因为:b没有赋值,是空串
    而f的值是"1",即True,(TRUE和不为0的数字是等效的)
    你的表达式正好判断的是f=true所以没有出错,你把f换为其他字母就不行了
      

  3.   

    其实第三个对VB这种自适应的程序还可以,别的就难说了!
    用代码3:
    dim f as string
    dim b as stringf="1"
    (没有给b赋值)if cbool(f) or b ="" then
       msgbox "错误"
    else
       msgbox "正确"
    end if
    错误3:程序这次并没有出现代码2的错误提示("类型不匹配"),只是提示if语句中指定的“错误”提示。
      

  4.   

    kwxx(木星) 
    第三个例子中错误是因为:b没有赋值,是空串
    而f的值是"1",即True,(TRUE和不为0的数字是等效的)
    你的表达式正好判断的是f=true所以没有出错,你把f换为其他字母就不行了--------------------------
    我似乎有一点明白,可是我明明也是给f定义为String类型的变量,而VB怎么就会把它认为成Boolen类型的变量呢?这其中有什么讲法吗?
      

  5.   

    不是认成了
    是你的表达式
    if f or b="" then
    ....就是这个式子有问题
    你的if f or b="" then(这是个省略的表达式)
    等效表达式是if f=true or b="" then (标准的表达式)
    所以VB认为你的f是BOOLEN,但是你的f是STRING,所以出错了
    if f="" or b="" then

    if f or b=""
    不是一个意思VB不会认为是
    f或b是空串它认为你的表达式是:
    f是真(True)或者b是空串
      

  6.   

    Private Sub Command1_Click()
      Dim f As String
      Dim b As String
      Dim v As Boolean
      
      f = "1"
      
      v = f
      MsgBox TypeName(v) & "--" & v
      
      If f Or b = "" Then
         MsgBox "错误"
      Else
         MsgBox "正确"
      End If
    End Sub'If f Or b = "" Then 里的表达式应该是 Boolean 型的,从以上代码中If ...Then 的测试条件是两个boolean类型表达式,即f=true 和 b = ""的或运算'我在你的代码中增加了三行代码,以显示条件f的类型和值,可以知道f和b = ""的值均为True,所以总是执行MsgBox "错误"这个分支
      

  7.   

    谢谢大家~~人人给分。。我明白了就如同《C程序设计》一书中的'2.6变量赋初值'章节中所提出的例子一样:
    int a,b,c=5;表示a,b,c为整形变量,只对c初值为5。
    如果对几个变量赋同一初值,不能写成:
    int a=b=c=3;(如我写成if f or b="" then)而应写成:
    int a=3,b=3,c=3;(大家纠正的if f="" or b="" then)(我没法找了本C书看看,本人对VB是初学者C语言没有摸过)..我明白了其表皮与错误的原因,以后再慢慢的了解其深冗的意思吧,,谢谢大家。。
      

  8.   

    Dim f As String
    'f = "D"
    If f Then
       MsgBox (VarType(f))
    End If
    我测试了一下,也很奇怪
    f没赋值时,说if f then有错,无效的参数或过程
    f有赋值时说类型不匹配
      

  9.   

    if f="" or b ="" then
       msgbox "错误"
    else
       msgbox "正确"
    end if这样就好了
      

  10.   

    既然定义了f是string就不能再以为它可以被默认成true了