Private Sub Text2_Change()
  Dim a, b, c As Single
  a = CSng(Text1.Text)
  b = CSng(Text2.Text)
  c = CSng(Text3.Text)
If Option1.Value = True Then
  Call opt1
  Text5.Text = a / b
ElseIf Option2.Value = True Then
  Call opt2
  Text5.Text = c / b
End If
End Sub通用窗口函数声明
Sub opt1()
  Form1.Text3.Locked = True
  Form1.Text3.BackColor = &H80000010
End Sub
Sub opt2()
  Form1.Text1.Locked = True
  Form1.Text1.BackColor = &H80000010
End Sub
请问这段程序有什么问题,感谢各位

解决方案 »

  1.   

    问题出在Text5.Text赋值上
    计算的结果是数值
    加上Str就好
    Text5.Text = Str(a / b)
      

  2.   


    在 Text2.Text 输入值时出现类型不匹配,怎么回事,我觉得没有问题
      

  3.   

    要不这样看看

      Dim a, b, c As String
      a = Text1.Text
      b = Text2.Text
      c = Text3.Text
    然后
    Text5.Text = Str(CSng(a) / CSng(b))
      

  4.   

    1L说的没错阿.
    出问题的语句在text2_change中,当然是text2输入时报错。
      

  5.   

    在text2_change中的两处text5.tex=改为如下:
    text5.text=cstr(a/b)
    text5.text=cstr(c/d)
      

  6.   

    代码没有错.
      a = CSng(Text1.Text)
      b = CSng(Text2.Text)
      c = CSng(Text3.Text)'当你在更改Text2 的内容时,你要确信 Text1 Text2 Text3内的内容均为数值.
    建议作如下更改:
    ........
    ........
    If IsNumeric(Text1.Text) And IsNumeric(Text2.Text) And IsNumeric(Text3.Text) Then '判断 Text1 Text2 Text3 是否为数值
      a = CSng(Text1.Text)
      b = CSng(Text2.Text)  '增加一句 if B=0 then B=1 'B不能等于0,要不后面会出现错误.
      c = CSng(Text3.Text)
    Else
      a = 0
      b = 1  'B不能等于0,要不后面会出现错误.
      c = 0
       'Text1 Text2 Text3 中有非数值内容
    End If
    ..........
    ..........
      

  7.   

    问题在text2_change这个事件上,只要text2里面的内容一发生变化,马上启动下面的程序。关键是你要实现这个目标的思路是什么?为什么把text2_change下的程序要放在text2发生变化的事件里呢?只要text2一输入一个字符,也就是说它的内容发生了变化,此时,下面的程序已经触发。所以请想哈变通办法,不要用text2_change这个事件。
      

  8.   

    给text赋值用不着转换,不然你随便在程序里试一下就知道了。