What I want to do is set a flag to go from the Error Trapping option "Break on Unhandled Errors
" to the option "Break on all Errors
" (VBA menu: Tools > Options > General tab):
The reason for this is that I have error handlers throughout my code and whilst I'm debugging I want to be able to see what the errors are.
Setting the error flag off:
On Error GoTo 0
Will just take me back to the last place error handling was used, like two or three procedures before the one I'm working on.
The reasoning behind this is that I have a large codebase and I know there are several sections that I do not need to see what the errors are but I do once I get to a certain part of the processing (many hundreds of calls deep), it is at this point I want to turn on Break on Unhandled Errors.
I know this question is old, but adding an answer for anyone that needs to do this in Excel VBA. I have an add-in that I developed for my company that uses the following technique:
Dim objShell As Object
Dim strErrOption As String
Set objShell = CreateObject("WScript.Shell")
On Error Resume Next
strErrOption = objShell.RegRead("HKEY_CURRENT_USER\Software\Microsoft\VBA\7.1\Common\BreakOnAllErrors")
If strErrOption = 1 Or Err.Number <> 0 Then 'Break on All Errors Set or Reg Key DNE
On Error GoTo 0
objShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\VBA\7.1\Common\BreakOnAllErrors", 0
MsgBox ("Please Restart Excel")
End If
On Error GoTo 0
Note: Excel only reads the registry on open and only writes on close. This is why restarting the app is required.