View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
keepITcool keepITcool is offline
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