This is my first time using VBA in Outlook so please bear with me
I’ve created a basic Macro that does various things to folders. Since this takes a while I decided to make a status window that says what its currently doing. I simply keep setting one of the label’s values with this
Function UpdateStatus(Message As String)
StatusForm.StatusUpdate.Caption = Message
StatusForm.Repaint
End Function
The issue is that after it runs for a bit (5-15 seconds) the window and the rest of outlook locks; the form no longer updates and has a “(Not Responding)” in its window title.
I feel like I’m somehow dead locking the UI thread but I’m at a loss on how to work around it. Commenting out Repaint not surprisingly doesn’t let it update at all, but outside of that I don’t know where to look
Any suggestions?
Try adding
DoEventsin your computationally intensive loop. This yields the executing code to the UI thread so that other things can get done when you have computationally intensive stuff going on in the background. Office is single-threaded, so you can block the UI when you are running macros.Sample: