Is there a good alternative to using DoEvents in order to stop the application from going into 'Not Responding' mode during long processes, allowing labels etc to update with progress, and allowing user to cancel process?

Cheers,
Lithic