In this blog post I will explore the VBA Debugging options.
If you go to
Tools - Options - General
You will see the Error Trapping Options
1) Break on All Errors
2) Break in Class Modlue
3) Bread on Unhandled Errors
Depeding on whether you have an error hanler active or not, or if you call the a class of modue function you will get different behavious. Let's test them out.
1) Break on all errors.
Caller is a Sub of Function
It stops at all errors as soon as they occur: ex division by zero or Err.Raise
Caller is an Excel UDF.
The code will NOT STOP. It will just end execution at the point where the error is caused
Excel will Return #VALUE!
2) Break in Class Module
Caller is a Sub or Function
It stops only on Unhandled errors. If it meets an Err.Raise in a Class module it will stop
in any case.
Caller is an Excel UDF
It terminate only on Unhandled errors. If it meets an Err.Raise in a Class modue it will raise
Err.num 440, irrespective or the error number raised. VERY STRANGE
3) Break on Unhandled Errors
Caller is a Sub or Functin or UDF.
It stops only on Unhandler errors.
As you can see Opton number 3 is the one that gives the most consistency, followed by option number 1 and
finally option number 2.
I would recommend to use always "Break on Unhandled Errors" and switch to any of the other two options only if you are debugging difficult code.
Option 2 is interesting especially when you are developing an ActiveX component and you want to stop the debugger in the class.
Again, use "Break on Unhandled Errors" and you will save a lot of time trying to put up with the inconsistency between on how the debbuger behaves in case you are using an Excel UDF or just simply a sub or function.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment