Well, I've declared
Dim WithEvents objExp as InternetExplorer
Dim Sws as ShDocVw.ShellWindows
Dim objIE as ShDocVw.InternetExplorer

Then I code this
For Each objIE In Sws
Set ObjExp = objIE
Next

In the NewWindow2 event of objExp

Cancel = True

If u read through this code, u'll know that I am looping through
all IE windows and check for their events.

Unfortunately, there might be a time where while my code is
checking one IE's event, another IE's event has fired and ended
gracefully, and by the time I check for this IE's event, I can't
detect the event if it's fired. Because the event has already fired
and ended but my code can't check if it's fired yet since the event
has already ended.

So, I was thinking if I can Dim WithEvents an array of IE objects.
But apparently it won't work, and so I hope anybody can help
me in detecting all IE's event simultaneously.

Thanks