I use something like this:
Sub GracefulExit()
Dim ErrMsg As String
On Error GoTo Ender:
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.StatusBar = "Running GracefulExit"
Err = 1004 'Set an error to invoke Ender:
Ender: 'This will defy indentation in a module - it always stays in col 1
If Err <> 0 Then 'display the error
ErrMsg = "An unexpected error has occured:" & vbCrLf & vbCrLf _
& vbTab & "Error No: " & Err & vbCrLf _
& vbTab & "Description: " & Error & vbCrLf _
& vbTab & "StatusBar was: """ & Application.StatusBar & """"
MsgBox ErrMsg, vbCritical
End If 'otherwise reset the Application settings
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Application.StatusBar = ""
Application.ScreenUpdating = True
End Sub
The various settings are provided as examples of some that you may want to manipulate. You may want to test and store Application.Calculation status before you set it to xlManual just in case the user has it set to xlManual already - they will be annoyed if you reset to xlAutomatic!
The important thing is that even with Application.ScreenUpdating = False, the Application.StatusBar can be changed as your code executes. When you click OK on the message box, the StatusBar will revert to its' "normal" state.