Detecting Cancel being pressed in a VB6 InputBox

Bharat Kashyap picture Bharat Kashyap · Jan 1, 2012 · Viewed 10.5k times · Source

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.

Answer

Konrad Rudolph picture Konrad Rudolph · Jan 1, 2012

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.