Detecting Cancel being pressed in a VB6 InputBox
Frage
I'm building a VB application that accepts numbers in the beginning. I want to be able to exit if the user presses the cancel button in any of the input boxes. The code is :
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
I've tried using StrPtr and it stil doesnt work. What happens is even if I press Cancel, it still displays the error message.
Help will really be appreciated.
Lösung
StrPtr
is the way to go. Since you didn’t show the relevant code, there is no telling what you did wrong (but there are several errors in the code anyway). In principle, the following works:
Dim a As String
a = InputBox("Enter Numerator 1")
If StrPtr(a) = 0 Then
' Nothing was entered.
End If
I suspect that you applied the check to a1
etc. instead of the original variables. Not only does this not work (Str
forces the string to be non-null), it also makes no sense: what are those variables for, anyway?
Furthermore, all your variable declarations are wrong. The following:
Dim a, b, c, d As Integer
declares a
, b
and c
as Variant
. Only d
will be an Integer
. For this, and for other reasons (readability), never declare multiple variables in one statement. Always declare them separately. Oh, and use meaningful names. a
, b
, c
, d
aren’t helpful.
Andere Tipps
If I understand your question correctly, you want to stop processing the moment user presses a cancel button.
I would suggest doing something like this (Note that I changed the variables to a1, b1,c1,d1 of assignment from InputBox):
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