I know this thread is old. But I wanted to add this note.
This actually happens to me occasionally in access and A LOT in excel (where it's Application.Screenupdating=False).
If you have a lot of code that would normally do a lot of aggressive screen updating, and that code starts really fast right after a MsgBox "ok" button, then I've noticed that turning off echo/screenupdating simply doesn't work at that point in the code.
The solution is simple - just put it before that last drop-dead point (the msgbox).
I encounter the exact same problem all the time with temporary re-captioning of labels.
My code says:
'button Click event, or whatever
Msgbox "Get ready to rock 'n roll", vbOK," "
Label1.Caption="Processing.."
'a bunch of fast moving, screen-crazy code here
Label1.Caption="Finished"
But, I find that what I need to do is this:
'button Click event, or whatever
Label1.Caption=Processing..."
Msgbox "yes/no" variable"
If yes, proceed (and label caption - or in your case, Echo.False) "sticks"
if no, reverse (label caption originally, or in your case, Echo.True)
end if
etc
So long story short, I often need to move my line of code that does ANYTHING (like turning off screenupdating, OR a temporary label re-paint, etc.) to another step back from the start of fast moving code.