@Isaac - there IS an issue about "Resume" vs. "Exit Sub" and I can tell you right now, you DO need a RESUME. It is incredibly important.
Event code is, in essence, a subroutine that is triggered by an event detected by Access via whatever method it uses. A LOT of events are simply that you saved a record or you opened a form - things that Access does "behind the scenes" for you - and as a part of doing that task, Access checks for an event procedure. If you did this in a true-compiled language, you would issue a CALL to the FORM_CURRENT or FORM_BEFOREDATE routine, etc. Nothing special occurs - just a standard "programmed" call sequence to an address specified in the properties list.
Error code, however, is far more often triggered by events detected either by the operating system or by Access or JET or ACE during the processing of something that normally is NOT an event. For instance, any kind of overflow is a guaranteed error trap. There is a minuscule difference between a fault, a trap, and an interrupt in terms of their origin, but no difference in what happens next in Intel-based machines. And the fact that software can declare a fault doesn't change the fact that it is treated like a hardware problem.
Error code in VBA counts as an interrupt and definitely has an effect on the process "interrupt stack." To take an interrupt, you have to save a context that WASN'T created by a CALL verb in whatever language you are using. That means you have left stuff on the program stack that didn't get there from the event. You ALSO are in a mode that can result in locking up your process. You see, one event cannot interrupt another event, and one error usually cannot interrupt another error. But if you incorrectly dismiss the error, you leave yourself in interrupt context. You now have a "mangled" stack AND your system potentially has not correctly reset the hardware interrupt handling mechanism.
We have had numerous cases on the forum in which the problem is doing an End Sub from an Error/Trap Handler. The most common system is to crash the process. Bang, Zoom, Gone! If you go into an Error/Trap Handler, you MUST leave it by the approved method EVEN if that means a RESUME to a label on an End Sub. That is because the RESUME clears the leftover hardware implications of an error trap, allowing further traps and interrupts to be fielded. Can't find the reference right now but it was within the last two years.
Allen Browne offers this about error handling:
How to trap and log the errors reported while a Microsoft Access database is in use. (Access 95 and onwards.)
allenbrowne.com
@Number11, the Allen Browne article gives you some sample code for the situation where you want to intercept several different but specific error numbers, so it might be interesting to you, too.