I've noticed that with events such as Worksheet_Change(ByVal Target As Range) that they are fired whether the user makes the change or code makes the change. Of course one might wish code under this event to only run if the user makes a change but not if other code makes a change to the worksheet. Is there any way for code to distinguish whether an event was user initiated or code initiated? Probably not, I believe. One could, at the beginning of a routine that would cause Worksheet_Change to fire, turn off events by setting Application.EnableEvents to false, right? And then trun them back on at the end of the routine. But what if it is only desired to turn off one event, what if it is necessary that others be able to fire, say a textbox_change event for instance. I suppose it may not be necessary for other events to be enabled since they can always be called manually once code is running, but it might be more convenient. Besides turning events off one might create a semaphore as an integer. As long as it is zero all events/code that should run only upon user action would be able to run. Every time a routine begins that may fire an event containing code that shouldn't then be executed would increment the semaphore, and each time such a routine ended it would decrement the semaphore. I believe that's a common method for preventing certain code from running. But it could involve adding extra code to the beginning and end of a lot of routines and makes things more complicated. So does anybody know how to turn off a specific event temporarily?