ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   how do I make a routine run after the 'cancel' butten is pressed . (https://www.excelbanter.com/excel-programming/320430-how-do-i-make-routine-run-after-cancel-butten-pressed.html)

Dave

how do I make a routine run after the 'cancel' butten is pressed .
 
Basically I have a macro which contains a vbYesNoCancel message box. I need
the macro to run a sub-routine when the user clicks 'cancel'. At the moment
it just escapes out of the macro and stops. I don't seem to be able to
manipulate the vbCancel as an elseif for the user response. Is there any kind
of onCancel functionality or another way to run a sub-routine when the user
clicks cancel? Or do I have to create my own dialog box from scratch?

Sharad Naik

how do I make a routine run after the 'cancel' butten is pressed .
 
Enclose the Right part after msgbox in to paranthesis and assign the
response of msgbox to a variable

e.g

Dim userResponse As String

userResponse = MsgBox ("Do you want to save changes?"
If userResponse = vbCancel Then
'code if cancel is clicked
End If

OR if you are working on all 3 possible responses then

Select Case userResponse
Case vbOK
'code if OK clicked
Case vbNO
'code if NO clicked
Case vbCancel
'code if Cancel clicked
End Select

Sharad

"Dave" wrote in message
...
Basically I have a macro which contains a vbYesNoCancel message box. I
need
the macro to run a sub-routine when the user clicks 'cancel'. At the
moment
it just escapes out of the macro and stops. I don't seem to be able to
manipulate the vbCancel as an elseif for the user response. Is there any
kind
of onCancel functionality or another way to run a sub-routine when the
user
clicks cancel? Or do I have to create my own dialog box from scratch?




Tom Ogilvy

how do I make a routine run after the 'cancel' butten is pressed .
 
Sub tester1()
Dim ans As Long
ans = MsgBox("What to do", vbYesNoCancel)
Select Case ans
Case vbYes
MsgBox "You said Yes"
Case vbNo
MsgBox "You said No"
Case vbCancel
MsgBox "You said cancel"
End Select

End Sub

Works for me.

--
Regards,
Tom Ogilvy




"Dave" wrote in message
...
Basically I have a macro which contains a vbYesNoCancel message box. I

need
the macro to run a sub-routine when the user clicks 'cancel'. At the

moment
it just escapes out of the macro and stops. I don't seem to be able to
manipulate the vbCancel as an elseif for the user response. Is there any

kind
of onCancel functionality or another way to run a sub-routine when the

user
clicks cancel? Or do I have to create my own dialog box from scratch?




AA2e72E

how do I make a routine run after the 'cancel' butten is pressed .
 
This works for me; try to adapt it.

Sub xx()
Select Case MsgBox("MSG", vbCritical + vbYesNoCancel)
Case vbYes
MsgBox "yes"
Case vbNo
MsgBox "no"
Case vbCancel
MsgBox "cancel"
End Select
End Sub


"Dave" wrote:

Basically I have a macro which contains a vbYesNoCancel message box. I need
the macro to run a sub-routine when the user clicks 'cancel'. At the moment
it just escapes out of the macro and stops. I don't seem to be able to
manipulate the vbCancel as an elseif for the user response. Is there any kind
of onCancel functionality or another way to run a sub-routine when the user
clicks cancel? Or do I have to create my own dialog box from scratch?


Sharad Naik

how do I make a routine run after the 'cancel' butten is pressed .
 
corrections:

1. Dim userResponse As Integer
"Though String will work, this is correct type.

2. MsgBox ("Do you want to save changes?", vbYesNoCancel)

But I realize that by the time I write this corrections, you already
got other better responses from Tom and an AlphaNumeric fellow ;-)

cheers

Sharad

"Sharad Naik" wrote in message
...
Enclose the Right part after msgbox in to paranthesis and assign the
response of msgbox to a variable

e.g

Dim userResponse As String

userResponse = MsgBox ("Do you want to save changes?"
If userResponse = vbCancel Then
'code if cancel is clicked
End If

OR if you are working on all 3 possible responses then

Select Case userResponse
Case vbOK
'code if OK clicked
Case vbNO
'code if NO clicked
Case vbCancel
'code if Cancel clicked
End Select

Sharad

"Dave" wrote in message
...
Basically I have a macro which contains a vbYesNoCancel message box. I
need
the macro to run a sub-routine when the user clicks 'cancel'. At the
moment
it just escapes out of the macro and stops. I don't seem to be able to
manipulate the vbCancel as an elseif for the user response. Is there any
kind
of onCancel functionality or another way to run a sub-routine when the
user
clicks cancel? Or do I have to create my own dialog box from scratch?






Dave

how do I make a routine run after the 'cancel' butten is press
 
Thanks, I was trying if and else ifs - this seems like it should solve the
problem, much appreciated!!!!!!!!!!!!

"Tom Ogilvy" wrote:

Sub tester1()
Dim ans As Long
ans = MsgBox("What to do", vbYesNoCancel)
Select Case ans
Case vbYes
MsgBox "You said Yes"
Case vbNo
MsgBox "You said No"
Case vbCancel
MsgBox "You said cancel"
End Select

End Sub

Works for me.

--
Regards,
Tom Ogilvy




"Dave" wrote in message
...
Basically I have a macro which contains a vbYesNoCancel message box. I

need
the macro to run a sub-routine when the user clicks 'cancel'. At the

moment
it just escapes out of the macro and stops. I don't seem to be able to
manipulate the vbCancel as an elseif for the user response. Is there any

kind
of onCancel functionality or another way to run a sub-routine when the

user
clicks cancel? Or do I have to create my own dialog box from scratch?





Chip Pearson

how do I make a routine run after the 'cancel' butten is pressed .
 
1. Dim userResponse As Integer

To be totally accurate, you should declare the variable as a
Long.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com



"Sharad Naik" wrote in message
...
corrections:

1. Dim userResponse As Integer
"Though String will work, this is correct type.

2. MsgBox ("Do you want to save changes?", vbYesNoCancel)

But I realize that by the time I write this corrections, you
already
got other better responses from Tom and an AlphaNumeric fellow
;-)

cheers

Sharad

"Sharad Naik" wrote in message
...
Enclose the Right part after msgbox in to paranthesis and
assign the response of msgbox to a variable

e.g

Dim userResponse As String

userResponse = MsgBox ("Do you want to save changes?"
If userResponse = vbCancel Then
'code if cancel is clicked
End If

OR if you are working on all 3 possible responses then

Select Case userResponse
Case vbOK
'code if OK clicked
Case vbNO
'code if NO clicked
Case vbCancel
'code if Cancel clicked
End Select

Sharad

"Dave" wrote in message
...
Basically I have a macro which contains a vbYesNoCancel
message box. I need
the macro to run a sub-routine when the user clicks 'cancel'.
At the moment
it just escapes out of the macro and stops. I don't seem to
be able to
manipulate the vbCancel as an elseif for the user response.
Is there any kind
of onCancel functionality or another way to run a sub-routine
when the user
clicks cancel? Or do I have to create my own dialog box from
scratch?








Sharad Naik

how do I make a routine run after the 'cancel' butten is pressed .
 
This is what the Help on Message box tells:

"Displays a message in a dialog box, waits for the user to click a button,
and returns an Integer indicating which button the user clicked."

Sharad

"Chip Pearson" wrote in message
...
1. Dim userResponse As Integer


To be totally accurate, you should declare the variable as a Long.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com



"Sharad Naik" wrote in message
...
corrections:

1. Dim userResponse As Integer
"Though String will work, this is correct type.

2. MsgBox ("Do you want to save changes?", vbYesNoCancel)

But I realize that by the time I write this corrections, you already
got other better responses from Tom and an AlphaNumeric fellow ;-)

cheers

Sharad

"Sharad Naik" wrote in message
...
Enclose the Right part after msgbox in to paranthesis and assign the
response of msgbox to a variable

e.g

Dim userResponse As String

userResponse = MsgBox ("Do you want to save changes?"
If userResponse = vbCancel Then
'code if cancel is clicked
End If

OR if you are working on all 3 possible responses then

Select Case userResponse
Case vbOK
'code if OK clicked
Case vbNO
'code if NO clicked
Case vbCancel
'code if Cancel clicked
End Select

Sharad

"Dave" wrote in message
...
Basically I have a macro which contains a vbYesNoCancel message box. I
need
the macro to run a sub-routine when the user clicks 'cancel'. At the
moment
it just escapes out of the macro and stops. I don't seem to be able to
manipulate the vbCancel as an elseif for the user response. Is there
any kind
of onCancel functionality or another way to run a sub-routine when the
user
clicks cancel? Or do I have to create my own dialog box from scratch?









Peter T

how do I make a routine run after the 'cancel' butten is pressed .
 
"Help" has confused me in various places like this. I wonder if in this case
"integer" mearly means a whole number.

If I try
dim x
x = 12: x = "abc"
x = MsgBox(123, vbYesNoCancel)
and after clicking the msgbox I look in the Locals window, x is indicated as
Variant/Long

Regards,
Peter T


"Sharad Naik" wrote in message
...
This is what the Help on Message box tells:

"Displays a message in a dialog box, waits for the user to click a button,
and returns an Integer indicating which button the user clicked."

Sharad

"Chip Pearson" wrote in message
...
1. Dim userResponse As Integer


To be totally accurate, you should declare the variable as a Long.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com



"Sharad Naik" wrote in message
...
corrections:

1. Dim userResponse As Integer
"Though String will work, this is correct type.

2. MsgBox ("Do you want to save changes?", vbYesNoCancel)

But I realize that by the time I write this corrections, you already
got other better responses from Tom and an AlphaNumeric fellow ;-)

cheers

Sharad

"Sharad Naik" wrote in message
...
Enclose the Right part after msgbox in to paranthesis and assign the
response of msgbox to a variable

e.g

Dim userResponse As String

userResponse = MsgBox ("Do you want to save changes?"
If userResponse = vbCancel Then
'code if cancel is clicked
End If

OR if you are working on all 3 possible responses then

Select Case userResponse
Case vbOK
'code if OK clicked
Case vbNO
'code if NO clicked
Case vbCancel
'code if Cancel clicked
End Select

Sharad

"Dave" wrote in message
...
Basically I have a macro which contains a vbYesNoCancel message box.

I
need
the macro to run a sub-routine when the user clicks 'cancel'. At the
moment
it just escapes out of the macro and stops. I don't seem to be able

to
manipulate the vbCancel as an elseif for the user response. Is there
any kind
of onCancel functionality or another way to run a sub-routine when

the
user
clicks cancel? Or do I have to create my own dialog box from scratch?











Tom Ogilvy

how do I make a routine run after the 'cancel' butten is pressed .
 
From the immediate window:

? typename(msgbox( vbYesNo))
Long

and the constants are typed as Long

Must be they haven't updated the help from the 16 bit version.

--
Regards,
Tom Ogilvy

"Sharad Naik" wrote in message
...
This is what the Help on Message box tells:

"Displays a message in a dialog box, waits for the user to click a button,
and returns an Integer indicating which button the user clicked."

Sharad

"Chip Pearson" wrote in message
...
1. Dim userResponse As Integer


To be totally accurate, you should declare the variable as a Long.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com



"Sharad Naik" wrote in message
...
corrections:

1. Dim userResponse As Integer
"Though String will work, this is correct type.

2. MsgBox ("Do you want to save changes?", vbYesNoCancel)

But I realize that by the time I write this corrections, you already
got other better responses from Tom and an AlphaNumeric fellow ;-)

cheers

Sharad

"Sharad Naik" wrote in message
...
Enclose the Right part after msgbox in to paranthesis and assign the
response of msgbox to a variable

e.g

Dim userResponse As String

userResponse = MsgBox ("Do you want to save changes?"
If userResponse = vbCancel Then
'code if cancel is clicked
End If

OR if you are working on all 3 possible responses then

Select Case userResponse
Case vbOK
'code if OK clicked
Case vbNO
'code if NO clicked
Case vbCancel
'code if Cancel clicked
End Select

Sharad

"Dave" wrote in message
...
Basically I have a macro which contains a vbYesNoCancel message box.

I
need
the macro to run a sub-routine when the user clicks 'cancel'. At the
moment
it just escapes out of the macro and stops. I don't seem to be able

to
manipulate the vbCancel as an elseif for the user response. Is there
any kind
of onCancel functionality or another way to run a sub-routine when

the
user
clicks cancel? Or do I have to create my own dialog box from scratch?











Sharad Naik

how do I make a routine run after the 'cancel' butten is pressed .
 
Thanks Tom, and Peter
So it's a "Long" way to learn from 'Help'

Sharad


"Tom Ogilvy" wrote in message
...
From the immediate window:

? typename(msgbox( vbYesNo))
Long

and the constants are typed as Long

Must be they haven't updated the help from the 16 bit version.

--
Regards,
Tom Ogilvy

"Sharad Naik" wrote in message
...
This is what the Help on Message box tells:

"Displays a message in a dialog box, waits for the user to click a
button,
and returns an Integer indicating which button the user clicked."

Sharad

"Chip Pearson" wrote in message
...
1. Dim userResponse As Integer

To be totally accurate, you should declare the variable as a Long.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com



"Sharad Naik" wrote in message
...
corrections:

1. Dim userResponse As Integer
"Though String will work, this is correct type.

2. MsgBox ("Do you want to save changes?", vbYesNoCancel)

But I realize that by the time I write this corrections, you already
got other better responses from Tom and an AlphaNumeric fellow ;-)

cheers

Sharad

"Sharad Naik" wrote in message
...
Enclose the Right part after msgbox in to paranthesis and assign the
response of msgbox to a variable

e.g

Dim userResponse As String

userResponse = MsgBox ("Do you want to save changes?"
If userResponse = vbCancel Then
'code if cancel is clicked
End If

OR if you are working on all 3 possible responses then

Select Case userResponse
Case vbOK
'code if OK clicked
Case vbNO
'code if NO clicked
Case vbCancel
'code if Cancel clicked
End Select

Sharad

"Dave" wrote in message
...
Basically I have a macro which contains a vbYesNoCancel message box.

I
need
the macro to run a sub-routine when the user clicks 'cancel'. At the
moment
it just escapes out of the macro and stops. I don't seem to be able

to
manipulate the vbCancel as an elseif for the user response. Is there
any kind
of onCancel functionality or another way to run a sub-routine when

the
user
clicks cancel? Or do I have to create my own dialog box from
scratch?













Norman Jones

how do I make a routine run after the 'cancel' butten is pressed .
 
Hi Peter,

"integer" mearly means a whole number


A happy coalescence of merely and nearly? <vbg

---
Regards,
Norman



"Peter T" <peter_t@discussions wrote in message
...
"Help" has confused me in various places like this. I wonder if in this
case
"integer" mearly means a whole number.

If I try
dim x
x = 12: x = "abc"
x = MsgBox(123, vbYesNoCancel)
and after clicking the msgbox I look in the Locals window, x is indicated
as
Variant/Long

Regards,
Peter T




Sharad Naik

how do I make a routine run after the 'cancel' butten is pressed .
 
Thanks Chip, forget my just previous post.
Sharad
"Sharad Naik" wrote in message
...
This is what the Help on Message box tells:

"Displays a message in a dialog box, waits for the user to click a button,
and returns an Integer indicating which button the user clicked."

Sharad

"Chip Pearson" wrote in message
...
1. Dim userResponse As Integer


To be totally accurate, you should declare the variable as a Long.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com



"Sharad Naik" wrote in message
...
corrections:

1. Dim userResponse As Integer
"Though String will work, this is correct type.

2. MsgBox ("Do you want to save changes?", vbYesNoCancel)

But I realize that by the time I write this corrections, you already
got other better responses from Tom and an AlphaNumeric fellow ;-)

cheers

Sharad

"Sharad Naik" wrote in message
...
Enclose the Right part after msgbox in to paranthesis and assign the
response of msgbox to a variable

e.g

Dim userResponse As String

userResponse = MsgBox ("Do you want to save changes?"
If userResponse = vbCancel Then
'code if cancel is clicked
End If

OR if you are working on all 3 possible responses then

Select Case userResponse
Case vbOK
'code if OK clicked
Case vbNO
'code if NO clicked
Case vbCancel
'code if Cancel clicked
End Select

Sharad

"Dave" wrote in message
...
Basically I have a macro which contains a vbYesNoCancel message box. I
need
the macro to run a sub-routine when the user clicks 'cancel'. At the
moment
it just escapes out of the macro and stops. I don't seem to be able to
manipulate the vbCancel as an elseif for the user response. Is there
any kind
of onCancel functionality or another way to run a sub-routine when the
user
clicks cancel? Or do I have to create my own dialog box from scratch?











Peter T

how do I make a routine run after the 'cancel' butten is pressed .
 
:-)
and - scope here for a new vb function

Coalesce(x, y) 'join together to form a "whole"

Regards,
Peter

"Norman Jones" wrote in message
...
Hi Peter,

"integer" mearly means a whole number


A happy coalescence of merely and nearly? <vbg

---
Regards,
Norman





All times are GMT +1. The time now is 05:47 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com