How to activate InputBox Cancel Function

C

Chua

I use InputBox to display a simple dialog box so that User can enter
information to be used in a macro. The dialog box has an OK button and a
Cancel button. How do I activate the Cancel button to perform the function
that I want?

I tried below code but it will do nothing and exit the program even when
User click the OK button.

a = InputBox ("Enter Password to Proceed:")

If vbCancel = True Then
Do nothing
End If

If a <> "12345" Then
MsgBox "INVALID PASSWORD !!!" & vbNewLine & "You have no administrator
rights to access the function.", vbCritical

End
End If
 
N

NateBuckley

I think when you click cancel it simple returns a 0 length string. So the
only way you can test if they clicked cancel is by checking the string that
is returned. Like so

Public Sub cancelInput()
Dim a As String
Dim hasPassword As Boolean
'Begin a loop that won't end till the user has inputted a password
While hasPassword = False
'assign the variable a to what ever Inputbox returns.
a = InputBox("Enter Password")
'If a's length is 0 then the user either clicked cancel
'or clicked OK with nothing entered.
If Len(a) = 0 Then
MsgBox ("Cancel or no password entered")
Else
MsgBox ("Your password is " & a)
hasPassword = True
End If
Wend
End Sub

Apart from checking the lenght or if a = "" don't think you can test it any
other way.
 
C

Chua

Hi Nate,

Thanks for sharing. I have tried this method before and it do works. I am
just wondering whether InputBox function can have similar function like
MsgBox that allows User to write different codes for OK button, Cancel
button....etc any other buttons.

Cheers
Chua
 
N

NateBuckley

Unfortunetly unlike the MsgBox which returns an integer and that value
depending if you clicked Ok,cancel etc, Inputbox just returns a string.

Perhaps there is a way but I'm not aware of one. You could just create your
own userform and make it act like a Inputbox that performs as you wish.
 
G

Gary Keramidas

check out the inputbox method in vb help

Option Explicit
Sub test()
Dim result As String
result = Application.InputBox("Enter String", "Test", , , , , , 2)
If result = False Then
MsgBox "cancel pressed"
Exit Sub
Else
MsgBox result
End If
End Sub
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top