我正在构建一个在开始时接受数字的VB应用程序。如果用户在任何输入框中按下取消按钮,我希望能够退出。 代码是:
Private Sub Command1_Click()
Dim a, b, c, d As Integer
Dim response As Integer
Dim a1, b1, c1, d1 As String
a = InputBox("Enter Numerator 1")
b = InputBox("Enter Denominator 1")
c = InputBox("Enter Numerator 2")
d = InputBox("Enter Denominator 2")
a1 = Str(a)
b1 = Str(b)
c1 = Str(c)
d1 = Str(d)
If a1 <> "" And b1 <> "" And c1 <> "" And d1 <> "" Then
'All Actions
...
Else
response = MsgBox("Are you sure you want to quit?", vbYesNo + vbQuestion, AdditionV1.0")
If response = vbYes Then
End
Else
Addition.Show
End If
我尝试过使用StrPtr,但它没有用。即使我按下取消,它仍会显示错误消息。
真的很感激帮助。
答案 0 :(得分:5)
StrPtr
是要走的路。由于您没有显示相关代码,因此无法确定您做错了什么(但代码中有几个错误)。原则上,以下工作:
Dim a As String
a = InputBox("Enter Numerator 1")
If StrPtr(a) = 0 Then
' Nothing was entered.
End If
我怀疑您将检查应用于a1
等,而不是原始变量。这不仅不起作用(Str
强制字符串为非空),它也没有意义:无论如何,这些变量是什么?
此外,您的所有变量声明都是错误的。以下内容:
Dim a, b, c, d As Integer
将a
,b
和c
声明为Variant
。只有d
才是Integer
。为此,由于其他原因(可读性),从不在一个语句中声明多个变量。始终单独声明它们。哦,并使用有意义的名字。 a
,b
,c
,d
无效。
答案 1 :(得分:0)
如果我理解你的问题,你想在用户按下取消按钮的那一刻停止处理。
我建议做这样的事情(请注意,我将变量更改为从InputBox分配的a1,b1,c1,d1):
Private Sub Command1_Click()
Dim a, b, c, d As Integer
Dim response As Integer
Dim a1, b1, c1, d1 As String
a1 = InputBox("Enter Numerator 1")
if (a1 = "")
exit sub
endif
b1 = InputBox("Enter Denominator 1")
if (b1 = "")
exit sub
endif
c1 = InputBox("Enter Numerator 2")
if (c1 = "")
exit sub
endif
d1 = InputBox("Enter Denominator 2")
if (d1 = "")
exit sub
endif
If a1 <> "" And b1 <> "" And c1 <> "" And d1 <> "" Then
'All Actions
...
Else
response = MsgBox("Are you sure you want to quit?", vbYesNo + vbQuestion, AdditionV1.0")
If response = vbYes Then
End
Else
Addition.Show
End If