I'm going by the MS documentation:


Long (long integer) variables are stored as signed 32-bit (4-byte) numbers ranging in value from -2,147,483,648 to 2,147,483,647.



Long
integer that identifies the nature of the error. Visual Basic errors (both Visual Basic-defined and user-defined errors) are in the range 0–65535. The range 0–512 is reserved for system errors; the range 513–65535 is available for user-defined errors.

When setting the Number property to your own error code in a class module, you add your error code number to the vbObjectErrorconstant.



How many?
65535 = 2^16-1

I used the 3 high order bits to mark severity, so that leaves 12 or 13 error messages



On Error Goto ErrHandle ' DID YOU FORGET THIS?
Second line