Thread: Control-Break
View Single Post
  #11   Report Post  
Posted to microsoft.public.excel.programming
Tim Zych Tim Zych is offline
external usenet poster
 
Posts: 389
Default Control-Break

To add, you should see a list of valid constants pop up after you type
Application.EnableCancelKey =

If you don't see it, my guess is that the VBA project has a non-obvious
compilation error somewhere (assuming you don't have Auto List Members
unchecked).
Add Option Explicit at the top of all code modules and then Debug - Compile
and fix them. It's a good idea to check "Require Variable Declaration" from
Tools - Options -Editor so that Excel can add Option Explicit
automatically before any code is written.

--
Tim Zych
www.higherdata.com
Compare data in workbooks and find differences with Workbook Compare
A free, powerful, flexible Excel utility

"Tim Zych" <tzych@NOSp@mE@RTHLINKDOTNET wrote in message
...
And no matter whether I have EnableCancelKey
set to True or False, I do not get a trappable error when I hit Escape or
Escape/Break or Control/Break during the currency of the macro.


Maybe I'm reading too literally, but True and False are not the values you
want, xlErrorHandler is.

xlErrorHandler is a constant of 2, which is not achievable using True (-1)
or False (0)

From the Object Browser in the VBE, EnableCancelKey:

Const xlDisabled = 0
Const xlInterrupt = 1
Const xlErrorHandler = 2


--
Tim Zych
www.higherdata.com
Compare data in workbooks and find differences with Workbook Compare
A free, powerful, flexible Excel utility


"Neptune Dinosaur" wrote in message
...
Well, there must to be something deficient about our implementation of
Excel
and/or VBA. We have Excel 2003 (11.8211.8202) SP3 and VBA 6.5 (Retail
6.5.1024). I get "no results found" when I enter "EnableCancelKey" in
VBA
Help (it is very common to get no relevant results when you type in the
exact
words that ought to get a hit). And no matter whether I have
EnableCancelKey
set to True or False, I do not get a trappable error when I hit Escape or
Escape/Break or Control/Break during the currency of the macro. The best
I
get is the uncontrolled RTE-like box that only allows "Debug" or "End"
(which
is the very thing I am trying to avoid as it will be un-savvy users who
will
be seeing it).

Do I need to change the change the error-trapping option to "Break On All
Errors"? At present it is on "Break on Unhandled errors", which traps
everything else I have ever needed to trap via the On Error GoTo caper.

I'm looking for a practical solution to this rather than a "this should
work" one, or at least a clue as to whether I might have an environment
in
which this cannot be done.
--
Time is just the thing that keeps everything from happening all at once


"Jim Cone" wrote:

In VBA Help, type in EnableCancelKey.
You can also find it as a property of the Application object.

Escape/ControlBreak generates Err.Number 18.
You can trap for that in your error handler if you set EnableCancelKey
to xlErrorHandler.
It is then up to you to write whatever code you need when that error
occurs...
'--
Exit Sub
ErrorHandler:
If Err.Number < 18 then
'Do something to handle error
Else
'Do something to make your impatient user happy
End If
--
Jim Cone
Portland, Oregon USA
http://www.realezsites.com/bus/primitivesoftware
(Excel Add-ins / Excel Programming)



"Neptune Dinosaur"
wrote in message
Hmmmm

Application.EnableCancelKey turns OFF the response to Control-Break.
VBA
help does not return any remotely relevant hits when I type in keywords
like
"Enable" or "CancelKey" or anything relevant to the issue. Where should
I be
looking?
--
Time is just the thing that keeps everything from happening all at once


"Jim Cone" wrote:


Application.EnableCancelKey is what you are looking for.
Check the help file for details.
If you run any lengthy loops, make sure to put a DoEvents function
in there someplace.
--
Jim Cone
Portland, Oregon USA
http://www.realezsites.com/bus/primitivesoftware
(Excel Add-ins / Excel Programming)




"Neptune Dinosaur"

wrote in message
G'day macrosaurs ....

I've had a good look around for the answer to this and can't find it,
so I
promise I am not just being lazy in calling for help. I need to be
able to
trap the Control-Break "event" when the user hits those keys to
interrupt a
macro, in the same way (if possible) that you trap an error. I have a
data
input/output application in Excel 2003/VBA that includes a "live demo"
of how
to use the file. It runs for 2 - 3 minutes or even longer, depending
on how
long the user lingers over the message boxes. I want the user to be
able to
abort the demo at any time by hitting Ctrl-Brk without getting the
scary run
time error that you normally get when you do that, i.e. I would like
this to
be a neat, controlled exit (my users are not hightly IT-savvy).

An alternative that I was considering would be to actually provide
Yes/No
message boxes at several strategic points throughout the demo, but it
would
be nice to have the "leave at any time" option if possible.

Any ideas?
--
Time is just the thing that keeps everything from happening all at
once