I'm actually having this problem with the Deactivate and QueryUnload events as well.
From my reading I think the Unload event is supposed to fire when you close a form with the close button or with the unload command. So far neither has happened. With the statement:
Unload UserForm1
the terminate event is the only one that fires! I am testing this by creating the Unload, QueryUnload, Deactivate, Terminate, etc, events in my code and using msgboxes in them to alert me. So far, the terminate event is the only thing that has fired no matter how I close the form (hide command, close button, unload command).
What am I missing? (This is VBExcel btw)