Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,452
Default Difference Escape and Ctrl + Break to interrupt code

Have a bit of code with this simplified construction:


Sub Test()

On Error GoTo STOPTEST
Application.EnableCancelKey = xlErrorHandler

OtherSub

Do While Condition = True
DoEvents
OtherSub
DoEvents
Loop

STOPTEST:

MsgBox "Stopped Test"

End Sub

Now when I am in the Sub OtherSub the Escape key will interrupt this code
and go to STOPTEST, but not when
I am in the Do While loop and not in OtherSub.
Ctrl + Break/Pause will work in both situations.
What could be the explanation for this?
Ideally I would like the Escape key to work in both situations.


RBS

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,253
Default Difference Escape and Ctrl + Break to interrupt code

Hi Bart,

I think it's related to the DoEvents.

Also note that if you have an errorhandler in Othersub
THAT will take over.

e.g.

Sub Test()
On Error GoTo errProc:
Application.EnableCancelKey = xlErrorHandler

BusyBee
MsgBox "Returned/completed"
Exit Sub

errProc:
MsgBox "Stopped Test"
End Sub

Sub BusyBee()
Dim i#, n#, m#
m = 100000000#

On Error GoTo errProc:
'note when called from test the key is in effect

For i = 1 To m: n = n + 1: Next

MsgBox "switch handler"
On Error GoTo 0
'each error will now be handled by the handler from the caller.
'but the enablekey is still active..
For i = 1 To m: n = n + 1: Next

MsgBox "from now on Esc wont work"
For i = 1 To m
n = n + 1: If n Mod 1000 Then DoEvents
Next

Exit Sub

errProc:
If MsgBox("Stopped Other... Continue?", vbYesNo) = vbYes Then
Resume
Else
End
End If
End Sub



hth
--
keepITcool
| www.XLsupport.com | keepITcool chello nl | amsterdam


RB Smissaert wrote :

Have a bit of code with this simplified construction:


Sub Test()

On Error GoTo STOPTEST
Application.EnableCancelKey = xlErrorHandler

OtherSub

Do While Condition = True
DoEvents
OtherSub
DoEvents
Loop

STOPTEST:

MsgBox "Stopped Test"

End Sub

Now when I am in the Sub OtherSub the Escape key will interrupt this
code and go to STOPTEST, but not when I am in the Do While loop and
not in OtherSub. Ctrl + Break/Pause will work in both situations.
What could be the explanation for this?
Ideally I would like the Escape key to work in both situations.


RBS

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,452
Default Difference Escape and Ctrl + Break to interrupt code

Hi keepITcool,

I still don't quite get it.
The Sub OtherSub has no error handler. Leaving out one or both of the
DoEvents statements
makes matters worse as Excel will just freeze or crash on pressing the
Escape key, so I need these.
I have done a bit more reading about this and it seems that Ctrl +
Pause/Break is just more reliable than Escape.
I am in Excel 2002. Maybe I need some API to capture a keypress and take
action according.

RBS


"keepITcool" wrote in message
ft.com...
Hi Bart,

I think it's related to the DoEvents.

Also note that if you have an errorhandler in Othersub
THAT will take over.

e.g.

Sub Test()
On Error GoTo errProc:
Application.EnableCancelKey = xlErrorHandler

BusyBee
MsgBox "Returned/completed"
Exit Sub

errProc:
MsgBox "Stopped Test"
End Sub

Sub BusyBee()
Dim i#, n#, m#
m = 100000000#

On Error GoTo errProc:
'note when called from test the key is in effect

For i = 1 To m: n = n + 1: Next

MsgBox "switch handler"
On Error GoTo 0
'each error will now be handled by the handler from the caller.
'but the enablekey is still active..
For i = 1 To m: n = n + 1: Next

MsgBox "from now on Esc wont work"
For i = 1 To m
n = n + 1: If n Mod 1000 Then DoEvents
Next

Exit Sub

errProc:
If MsgBox("Stopped Other... Continue?", vbYesNo) = vbYes Then
Resume
Else
End
End If
End Sub



hth
--
keepITcool
| www.XLsupport.com | keepITcool chello nl | amsterdam


RB Smissaert wrote :

Have a bit of code with this simplified construction:


Sub Test()

On Error GoTo STOPTEST
Application.EnableCancelKey = xlErrorHandler

OtherSub

Do While Condition = True
DoEvents
OtherSub
DoEvents
Loop

STOPTEST:

MsgBox "Stopped Test"

End Sub

Now when I am in the Sub OtherSub the Escape key will interrupt this
code and go to STOPTEST, but not when I am in the Do While loop and
not in OtherSub. Ctrl + Break/Pause will work in both situations.
What could be the explanation for this?
Ideally I would like the Escape key to work in both situations.


RBS


  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1,080
Default Difference Escape and Ctrl + Break to interrupt code

"RB Smissaert" wrote in message
...
I have done a bit more reading about this and it seems that Ctrl +
Pause/Break is just more reliable than Escape.


You have hit the nail on the head, RBS. This has been my personal
experience.

I am in Excel 2002. Maybe I need some API to capture a keypress and take
action according.


Perhaps you are looking for something like this:

http://groups-beta.google.com/group/...97f656cd?hl=en

Regards,

Vasant


  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,452
Default Difference Escape and Ctrl + Break to interrupt code

Vasant,

Thanks, that looks like a nice and simple API and will give that a try.

RBS

"Vasant Nanavati" <vasantn *AT* aol *DOT* com wrote in message
...
"RB Smissaert" wrote in message
...
I have done a bit more reading about this and it seems that Ctrl +
Pause/Break is just more reliable than Escape.


You have hit the nail on the head, RBS. This has been my personal
experience.

I am in Excel 2002. Maybe I need some API to capture a keypress and take
action according.


Perhaps you are looking for something like this:

http://groups-beta.google.com/group/...97f656cd?hl=en

Regards,

Vasant





  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,452
Default Difference Escape and Ctrl + Break to interrupt code

Vasant,

Tried that API and it works perfect.
Thanks again for the tip.

RBS


"Vasant Nanavati" <vasantn *AT* aol *DOT* com wrote in message
...
"RB Smissaert" wrote in message
...
I have done a bit more reading about this and it seems that Ctrl +
Pause/Break is just more reliable than Escape.


You have hit the nail on the head, RBS. This has been my personal
experience.

I am in Excel 2002. Maybe I need some API to capture a keypress and take
action according.


Perhaps you are looking for something like this:

http://groups-beta.google.com/group/...97f656cd?hl=en

Regards,

Vasant



  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1,080
Default Difference Escape and Ctrl + Break to interrupt code

Glad to help, RBS!

--

Vasant

"RB Smissaert" wrote in message
...
Vasant,

Tried that API and it works perfect.
Thanks again for the tip.

RBS


"Vasant Nanavati" <vasantn *AT* aol *DOT* com wrote in message
...
"RB Smissaert" wrote in message
...
I have done a bit more reading about this and it seems that Ctrl +
Pause/Break is just more reliable than Escape.


You have hit the nail on the head, RBS. This has been my personal
experience.

I am in Excel 2002. Maybe I need some API to capture a keypress and

take
action according.


Perhaps you are looking for something like this:


http://groups-beta.google.com/group/...97f656cd?hl=en

Regards,

Vasant





  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,452
Default Difference Escape and Ctrl + Break to interrupt code

Vasant,

One problem with this API is that it can also pick up an Escape press from
outside Excel.
For now I have gone back to my old way of doing this. Will look for another
API.

RBS


"Vasant Nanavati" <vasantn *AT* aol *DOT* com wrote in message
...
Glad to help, RBS!

--

Vasant

"RB Smissaert" wrote in message
...
Vasant,

Tried that API and it works perfect.
Thanks again for the tip.

RBS


"Vasant Nanavati" <vasantn *AT* aol *DOT* com wrote in message
...
"RB Smissaert" wrote in message
...
I have done a bit more reading about this and it seems that Ctrl +
Pause/Break is just more reliable than Escape.

You have hit the nail on the head, RBS. This has been my personal
experience.

I am in Excel 2002. Maybe I need some API to capture a keypress and

take
action according.

Perhaps you are looking for something like this:


http://groups-beta.google.com/group/...97f656cd?hl=en

Regards,

Vasant






  #9   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1,080
Default Difference Escape and Ctrl + Break to interrupt code

Hi RBS:

Haven't thought this through, but perhaps there is a way of checking if
Excel is the active app at the time the key is pressed? Here's a
possibility:

http://groups-beta.google.com/group/...e0ab6fda?hl=en

Regards,

Vasant


"RB Smissaert" wrote in message
...
Vasant,

One problem with this API is that it can also pick up an Escape press from
outside Excel.
For now I have gone back to my old way of doing this. Will look for

another
API.

RBS


"Vasant Nanavati" <vasantn *AT* aol *DOT* com wrote in message
...
Glad to help, RBS!

--

Vasant

"RB Smissaert" wrote in message
...
Vasant,

Tried that API and it works perfect.
Thanks again for the tip.

RBS


"Vasant Nanavati" <vasantn *AT* aol *DOT* com wrote in message
...
"RB Smissaert" wrote in message
...
I have done a bit more reading about this and it seems that Ctrl +
Pause/Break is just more reliable than Escape.

You have hit the nail on the head, RBS. This has been my personal
experience.

I am in Excel 2002. Maybe I need some API to capture a keypress and

take
action according.

Perhaps you are looking for something like this:



http://groups-beta.google.com/group/...97f656cd?hl=en

Regards,

Vasant








  #10   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,253
Default Difference Escape and Ctrl + Break to interrupt code

...
Bart,
aha.. but if tou raise error 18.. it will get caught.
and if your caller sub will handle the error...

Option Explicit
Private Declare Function GetKeyState Lib "user32.dll" ( _
ByVal nVirtKey As Long) As Integer

Sub escTest()
On Error GoTo errH:
Application.EnableCancelKey = xlErrorHandler

Call BusyBee
MsgBox "done"
Exit Sub

errH:
MsgBox Err.Number & vbLf & Err.Description
End Sub

Sub BusyBee()
Dim i&, n&, m&
m = 100000000
For i = 1 To m
If GetKeyState(vbKeyEscape) < 0 Then Err.Raise 18
n = n + 1
Next
End Sub




--
keepITcool
| www.XLsupport.com | keepITcool chello nl | amsterdam


RB Smissaert wrote :

Vasant,

One problem with this API is that it can also pick up an Escape press
from outside Excel. For now I have gone back to my old way of doing
this. Will look for another API.

RBS


"Vasant Nanavati" <vasantn AT aol DOT com wrote in message
...
Glad to help, RBS!

--

Vasant

"RB Smissaert" wrote in message
...
Vasant,

Tried that API and it works perfect.
Thanks again for the tip.

RBS


"Vasant Nanavati" <vasantn AT aol DOT com wrote in message
...
"RB Smissaert" wrote in message
...
I have done a bit more reading about this and it seems that

Ctrl + Pause/Break is just more reliable than Escape.

You have hit the nail on the head, RBS. This has been my personal
experience.

I am in Excel 2002. Maybe I need some API to capture a keypress

and
take
action according.

Perhaps you are looking for something like this:


http://groups-beta.google.com/group/...xcel.programmi
ng/msg/5ca8f27597f656cd?hl=en

Regards,

Vasant







  #11   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,452
Default Difference Escape and Ctrl + Break to interrupt code

I think in my particular situation Ctrl + Pause/Break is actually fine,
because the Sub OtherSub will
run about every 20 seconds and in between you can do some things in Excel.
So you don't want to lose the Escape key as this can be needed for example
to get dialogs away.
It also will keep the code simple. Will have a look at both other
suggestions though.

RBS


"RB Smissaert" wrote in message
...
Vasant,

One problem with this API is that it can also pick up an Escape press from
outside Excel.
For now I have gone back to my old way of doing this. Will look for
another API.

RBS


"Vasant Nanavati" <vasantn *AT* aol *DOT* com wrote in message
...
Glad to help, RBS!

--

Vasant

"RB Smissaert" wrote in message
...
Vasant,

Tried that API and it works perfect.
Thanks again for the tip.

RBS


"Vasant Nanavati" <vasantn *AT* aol *DOT* com wrote in message
...
"RB Smissaert" wrote in message
...
I have done a bit more reading about this and it seems that Ctrl +
Pause/Break is just more reliable than Escape.

You have hit the nail on the head, RBS. This has been my personal
experience.

I am in Excel 2002. Maybe I need some API to capture a keypress and

take
action according.

Perhaps you are looking for something like this:


http://groups-beta.google.com/group/...97f656cd?hl=en

Regards,

Vasant







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
Is there a difference between CTRL+D and CTRL+" (quotation marks) AKMMS Excel Discussion (Misc queries) 2 March 22nd 10 07:43 PM
Ctrl+Alt+Break Tom Excel Programming 0 April 13th 05 12:22 PM
Can Not Get Macro to Break with CTRL-BREAK Break Me? Excel Programming 0 September 8th 04 03:15 AM
Control Break and Escape for Interrupting Code Tim Childs Excel Programming 3 May 21st 04 12:51 PM
Message box that does not interrupt code Claude Excel Programming 2 October 10th 03 04:12 PM


All times are GMT +1. The time now is 09:38 PM.

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

About Us

"It's about Microsoft Excel"