First: You only use WithEvents when you declare an object of any kind. (Other variables doesn't have any events so the keyword would be meaningless.)
Second: The keyword is optional, wich means that you can declare any objects you like without catching the events it supports.
And so the example you wanted, it won't be in code, because I'm a bit short on time.
If you declare a recordset using the WithEvents keyword you will gain access to an number of cool events. For instance you could populate your recordset in the background, and continue to run your code while you wait for the recordset to be fully populated. When that happens the recordset FetchComplete event will fire.
You could use the FetchProgress event to control a progress bar.
The WillChangeField and WillChangeRecord events are very handy when you need to control that the user haven't entered any illegal data in a control.
Use the Object Browser and the objects documentation to determine witch events the object supports, and when to use them.
To sum up, the WithEvents keyword can be extremely handy in some situations, but don't use it if you won't handle any of the events the object supports as it is a (minor) performance drag.
Good Luck!
-Mats Hulten