DoEvents gives your computer time to process additional commands. I
have used DoEvents when making sure my computer pauses while a second
document is opened.
Please post your code for the While Loop. It sounds as though it should
be re-written to enable additional processing. I suspect that instead
of a Do While loop, you need an If, then else statement there to handle
the processing the one time and allow your program to continue
processing other commands.
The error handling was an example of how to exit a subroutine once a
certain condition is met. In the event of an error, you want to exit
the subroutine. In your case, you want to exit the subroutine if the
value of the checkbox changes to False.