微软的project:VB代码问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/27 20:21:16
小弟初学VB 于是乎 用VB编写了一个计算器 我用的3个文本框 上面写数字都运行正常 但如果些字母或者汉字或者不写字母就出现“运行错误‘13’类型不匹配”的字样 请问我是不是应该加 if 语句排除这些情况呢?如果是应该怎样写
我的代码是这样编写的
Private Sub cmd1_Click()
Dim x As Currency
Dim y As Currency

x = txt1.Text
y = txt2.Text

txt3.Text = x + y

End Sub

Private Sub cmd2_Click()
Dim x As Currency
Dim y As Currency

x = txt1.Text
y = txt2.Text

txt3.Text = x - y

End Sub

Private Sub cmd3_Click()
Dim x As Currency
Dim y As Currency

x = txt1.Text
y = txt2.Text

txt3.Text = x * y
End Sub

Private Sub cmd4_Click()
Dim x As Currency
Dim y As Currency

x = txt1.Text
y = txt2.Text

txt3.Text = x / y
End Sub

Private Sub cmd5_Click()
End
End Sub
非常感谢大家帮忙 我的问题解决了 除数代码是这样写的:
Private Sub cmd除_Click()
x = Val(txt1.Text)
y = Val(txt2.Text)

If y = 0 Then
MsgBox "除数不能为[0]或[字母]", vbOKOnly + vbCritical + vbDefaultButton1 + vbApplicationModal, "阿呆说:"
End If

txt3.Text = x / y
End Sub
呵呵 阿呆是我的网号名字 我的QQ号码是522590330 小弟自学VB没多久 希望各位钱贝And大虾多多指教 ^_^
End sub

'把你的代码改成这样就好了啊 如下:
Private Sub cmd1_Click()
Dim x As Currency
Dim y As Currency

x = val(txt1.Text) '把你输入的内容看成数据,以下一样
y = val(txt2.Text)

txt3.Text = x + y

End Sub

Private Sub cmd2_Click()
Dim x As Currency
Dim y As Currency

x = val(txt1.Text)
y = val(txt2.Text)

txt3.Text = x - y

End Sub

Private Sub cmd3_Click()
Dim x As Currency
Dim y As Currency

x = val(txt1.Text)
y = val(txt2.Text)

txt3.Text = x * y
End Sub

Private Sub cmd4_Click()
Dim x As Currency
Dim y As Currency

x = (txt1.Text)
y = (txt2.Text)

txt3.Text = x / y '在这里的 Y (除数)不能为0,用个判断语句吧
if val(text2.text)=0 then
msgbox "你输入的除数不能为0!",0,"错误提示" '弹出个 错误 的对话框
text2.text=1 '如果除数0的话 ,我们自动给text2.text 赋值=1
end if
End Sub

Private Sub cmd5_Click()
End
End Sub

Private Sub cmd1_Click()
Dim x As Currency
Dim y As Currency
Try
x = txt1.Text
y = txt2.Text
txt3.Text = x + y

Catch ex As Exception
MsgBox("输入数据类型不正确,请输入数字")
End Try
end sub

象上面这样,把
x = txt1.Text
y = txt2.Text
txt3.Text = x + y
这三句都放在try语句里,其他三个按钮中也是一样,就能避免错误出现了,当有错误时MSGBOX会提示数据类型错误
这是最简单的一种解决方法了,可以试一下
我的答案在VB.net测试通过,如果是6.0我忘记了有没有try这个语句了,汗,如果你真的无法弄好,加我QQ吧5695061,应该能帮你解决,这里再写字就一堆啦

你可以在你的文本框的KeyPress事件中写上如下代码,就能解决问题了。
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
If KeyAscii < 48 Or KeyAscii > 57 Then
Beep
KeyAscii = 0
End If
End Sub
说明一下:KeyAscii函数返回键盘上按键的Ascii码,48到57分别代表0-9的10个数字,小于48或大于57都代表输入的不是数字。然后用
Beep
报警,再用
KeyAscii = 0 来返回一个空字符。
你也可以把Beep语句换成msgbox()提示框,向用户说明不能输入数字以外的字符。
试试吧。保证能行。这是最好、最专业的解决办法。

很多方法可以判断用户输入的是否合法,如:
在两个事件中可以写检查的代码(建设TEXT1为输入数的输入框。)
Private Sub TextBox1_Change()
rem 写检查字符的代码
End Sub

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
rem 写检查字符的代码
End Sub

关于写检查代码,请询问其他VB高手