@Paul_Hossler, you gave me an idea.
Here's a proposed solution, which i THINK might resolve this.
This solution doesn't CARE if my custom error numbers overlap native error numbers. It enables me to have a custom error-numbering strategy without fear of conflicting with native errors (or errors generated by other workbooks or applications.)
The solution exploits the .Source property of Err.
Table on worksheet called "tblCustomErrors"
ErrNum ErrDescription
11 User cancelled the process
53 User clicked pause
VBA:
Sub Test_Handler()
On Error GoTo HANDLER
Debug.Print 1 / 0 ' 11, Division-by-zero
Kill "C:\Doesn't-Exist.txt" ' 53, File not found
Err.Raise 11, "Custom" ' 11, User cancelled
Err.Raise 53, "Custom" ' 53, User paused
Exit Sub
HANDLER:
GlobalHandler
Resume Next
End Sub
Sub GlobalHandler()
Dim sDesc As String
Select Case Err.Source
Case "Custom"
' get description from worksheet
sDesc = WorksheetFunction.VLookup(Err.Number, [tblCustomErrors], 2, False)
Case Else
sDesc = Err.Description
End Select
MsgBox sDesc
End Sub
Who knows, this is might be how .Source was intended to be used.