I encountered the same problem but I solve it in a different way
just go to the expert view and add this VB command before the button/page/...etc.
this will make your QTP slow down for 5 seconds
you can try it!
"I realize it's an error, but no one is going to try to do that!"
From "Top 10 Stupid Comments from Developers".
Rule of thumb #1: Never use wait statements. What if the app is unusually slow? Your 5 second time will not be enough. Replace the sync function wherever there's a wait statement and your life will be much better. Believe me, I've been there.
Also, WaitProperty Method can be used for synchronization.
From QTP Help:
Waits until the specified object property achieves the specified value or exceeds the timeout before continuing to the next step. Returns TRUE if the property achieves the value, and FALSE if the timeout is reached before the property achieves the value.
y = Window("Test").WaitProperty("enabled", true, 3000)
This method can be used for Standard Window and for Browser. It works much better then Sync method.