Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 68
Default cancel message while sub running

Hi All,

I would like to create a cancel message that appears while a sub is running.
So, when the user hit the cancel button on the message box (or userform),
then the sub will exit and start the program from the beginning. And if the
user doens't hit the cancel button, then the sub will continue to work as is.

Any help is much appreciated.

thanks,
tracktraining
--
Learning
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 915
Default cancel message while sub running

tracktraining wrote:
Hi All,

I would like to create a cancel message that appears while a sub is running.
So, when the user hit the cancel button on the message box (or userform),
then the sub will exit and start the program from the beginning. And if the
user doens't hit the cancel button, then the sub will continue to work as is.

Any help is much appreciated.

thanks,
tracktraining


Consider this approach.

Here is code for a form that contains a command button and a text box:

Option Explicit
Private Sub CommandButton1_Click()
IsCancel = True
End Sub


And here is module code that would contain your sub:

Option Explicit
Public IsCancel As Boolean
Sub endlessloop()
Dim i As Long
IsCancel = False
UserForm1.Show vbModeless
Do Until IsCancel
UserForm1.TextBox1.Value = i
i = i + 1
DoEvents
Loop
MsgBox "you canceled"
UserForm1.Hide
End Sub


The keys to make this work are
- the global variable in the module, which the form can set
- the use of vbModeless when showing the form
- checking the state of the global flag "IsCancel" that signals when to
stop the loop

You need to be careful with this though. In real life it is typically
more difficult to know when to check the flag. By the same token it is
more difficult to know what to do when the flag is tripped. Variables
usually need to be reset, etc.

Also, unless you are very careful, you /do not/ want to call the sub
again from within itself, especially if there is more code after the
call. Why? Because the self-referential call will push the old instance
on the stack, and that will be waiting to resume execution later when
the new instance completes its uninterrupted mission. (Just imagine if
the user click cancel a dozen times... a dozen incomplete versions of
the sub will be stacked up, waiting to finish).
  #3   Report Post  
Posted to microsoft.public.excel.programming
r r is offline
external usenet poster
 
Posts: 125
Default cancel message while sub running

If MsgBox("your comment", vbOKCancel) = vbCancel Then
Exit Sub
End If

regards
r

Il mio ultimo lavoro ...
http://excelvba.altervista.org/blog/...ternative.html


"tracktraining" wrote:

Hi All,

I would like to create a cancel message that appears while a sub is running.
So, when the user hit the cancel button on the message box (or userform),
then the sub will exit and start the program from the beginning. And if the
user doens't hit the cancel button, then the sub will continue to work as is.

Any help is much appreciated.

thanks,
tracktraining
--
Learning

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1,049
Default cancel message while sub running

I thought application.ONKEY would work, but my test failed.

alternatively, with my test code, run it and the put 1 into cell A1

Option Explicit
Sub cancelled()
Dim i As Long
Dim bCancel As Boolean
bCancel = False
Do
Application.StatusBar = i
i = i + 1
If Range("A1") = 1 Then bCancel = True
DoEvents ' releases control back to PC - ie user can enter data into
the spreadsheet
Loop Until bCancel Or i = 1000000
if bCancel then msgbox "User interrupted!"
End Sub


"tracktraining" wrote in message
...
Hi All,

I would like to create a cancel message that appears while a sub is
running.
So, when the user hit the cancel button on the message box (or userform),
then the sub will exit and start the program from the beginning. And if
the
user doens't hit the cancel button, then the sub will continue to work as
is.

Any help is much appreciated.

thanks,
tracktraining
--
Learning


  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 68
Default cancel message while sub running

Can you tell me where I am supposed to put that code?

I have a userform and the code is outline as below:

Private Sub Graph_button_Click()
' obtains data and creates graphs base on user inputs
end sub

Private Sub Userform_Initialize()
' initialize the starting userform (making everything blank)
end sub


When the user hit the graph button, that's when i want the "Please wait
while report is being generated. If you want to cancel is transaction, please
click on the cancel button below." vbcancel , to appear.

if the user doesn't hit the cancel button after the report is generated,
then the message (or userform) will close.

But if the user hit the cancel button, then i want to stop the code from
running.

thanks again for helping.
--
Learning


"Patrick Molloy" wrote:

I thought application.ONKEY would work, but my test failed.

alternatively, with my test code, run it and the put 1 into cell A1

Option Explicit
Sub cancelled()
Dim i As Long
Dim bCancel As Boolean
bCancel = False
Do
Application.StatusBar = i
i = i + 1
If Range("A1") = 1 Then bCancel = True
DoEvents ' releases control back to PC - ie user can enter data into
the spreadsheet
Loop Until bCancel Or i = 1000000
if bCancel then msgbox "User interrupted!"
End Sub


"tracktraining" wrote in message
...
Hi All,

I would like to create a cancel message that appears while a sub is
running.
So, when the user hit the cancel button on the message box (or userform),
then the sub will exit and start the program from the beginning. And if
the
user doens't hit the cancel button, then the sub will continue to work as
is.

Any help is much appreciated.

thanks,
tracktraining
--
Learning





  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 68
Default cancel message while sub running

Can you tell me where I am supposed to put that code?

I have a userform and the code is outline as below:

Private Sub Graph_button_Click()
' obtains data and creates graphs base on user inputs
end sub

Private Sub Userform_Initialize()
' initialize the starting userform (making everything blank)
end sub


When the user hit the graph button, that's when i want the "Please wait
while report is being generated. If you want to cancel is transaction, please
click on the cancel button below." vbcancel , to appear.

if the user doesn't hit the cancel button after the report is generated,
then the message (or userform) will close.

But if the user hit the cancel button, then i want to stop the code from
running.

thanks again for helping.
--
Learning


"Patrick Molloy" wrote:

I thought application.ONKEY would work, but my test failed.

alternatively, with my test code, run it and the put 1 into cell A1

Option Explicit
Sub cancelled()
Dim i As Long
Dim bCancel As Boolean
bCancel = False
Do
Application.StatusBar = i
i = i + 1
If Range("A1") = 1 Then bCancel = True
DoEvents ' releases control back to PC - ie user can enter data into
the spreadsheet
Loop Until bCancel Or i = 1000000
if bCancel then msgbox "User interrupted!"
End Sub


"tracktraining" wrote in message
...
Hi All,

I would like to create a cancel message that appears while a sub is
running.
So, when the user hit the cancel button on the message box (or userform),
then the sub will exit and start the program from the beginning. And if
the
user doens't hit the cancel button, then the sub will continue to work as
is.

Any help is much appreciated.

thanks,
tracktraining
--
Learning



  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1,049
Default cancel message while sub running

I thought application.ONKEY would work, but my test failed.

alternatively, with my test code, run it and the put 1 into cell A1

Option Explicit
Sub cancelled()
Dim i As Long
Dim bCancel As Boolean
bCancel = False
Do
Application.StatusBar = i
i = i + 1
If Range("A1") = 1 Then bCancel = True
DoEvents ' releases control back to PC - ie user can enter data into
the spreadsheet
Loop Until bCancel Or i = 1000000
if bCancel then msgbox "User interrupted!"
End Sub


"tracktraining" wrote in message
...
Hi All,

I would like to create a cancel message that appears while a sub is
running.
So, when the user hit the cancel button on the message box (or userform),
then the sub will exit and start the program from the beginning. And if
the
user doens't hit the cancel button, then the sub will continue to work as
is.

Any help is much appreciated.

thanks,
tracktraining
--
Learning


Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
cancel Update message? Bob Excel Discussion (Misc queries) 3 June 10th 09 12:53 PM
Can't get Cancel to work in message box * Kenneth * Excel Discussion (Misc queries) 1 March 30th 06 08:10 PM
message box without ok or cancel button Subash Excel Discussion (Misc queries) 1 October 18th 05 10:38 AM
How to CANCEL file SAVE PROMPT when MACRO is running? Stuart Macro Muppet Excel Discussion (Misc queries) 3 August 11th 05 12:26 PM
Cancel Message Howard Excel Discussion (Misc queries) 1 December 21st 04 04:31 PM


All times are GMT +1. The time now is 11:08 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"