I'm looking for guidance from the experts. I've created a macro that brings in 4 individual raw files and does some complicated processes to complete. It has been working fine. However, the more you give them, the more they want and the users continue to start with larger and larger base files.

Here's the problem I see happening: if while the macro is running, the user clicks on the window or hits the enter key, the process running just stops where it's at (in a vlookup or index/match) and drops down to the next line of code and continues along it's merry way. What this results in is an incomplete ending document with missing data. I've tried to disable screen updating but no one likes that because they rather see that something is happening. I have made sure the progress bar is visible so that they see that calculating is being done. But even I who knows that is happening, clicks anyway to check email or something.
Some of these run 20-30 minutes so no one wants to stare at a screen for that long.

I've seen some references to DoEvents but I don't know if that is the answer and where/how would I use it. Is there some other way for mouse/keyboard actions to not affect the running of the macro?