В частности, если вы имеете дело с UserForm , то вы можете попробовать метод Repaint . Вы можете столкнуться с проблемой с DoEvents , если вы используете в своей форме триггеры событий. Например, любые клавиши, нажатые во время работы функции, будут отправлены DoEvents Ввод с клавиатуры будет обработан до обновления экрана, поэтому, если вы меняете ячейки в электронной таблице, удерживая одну из стрелок клавиш на клавиатуре, то событие смены ячейки будет продолжать срабатывать до завершения основной функции.
Пользовательская форма не обновляется в некоторых случаях, потому что DoEvents будет запускать события; однако Repaint обновит пользовательскую форму, и пользователь увидит изменения на экране, даже если другое событие сразу же следует за предыдущим.
В коде UserForm это так просто:
Me.Repaint