Статус выполнения VBA скрипта в Excel

компьютеры программирование excel скрипт VBA

Задача такая:
Есть скрипт, который выполняется при нажатии на кнопку. Необходимо при запуске скрипта, чтобы кнопка меняла цвет на один, а в конце выполнения цвет возвращался на прежний.
Мой скрипт выглядит примерно так:

Sub Script
ActiveSheet.Shapes(1).Fill.ForeColor.RGB = RGB(255, 0, 0)
For i = 1 to 100
......
Next i
ActiveSheet.Shapes(1).Fill.ForeColor.RGB = RGB(70, 130, 180)
End Sub

Все бы хорошо, но кнопка меняет цвет только после выполнения всего скрипта, причем меняет сперва на первый цвет, потом сразу на второй.
Вопрос: как сделать, чтобы первая смена цвета происходила перед выполнением цикла? Именно визуально...

Примечание:
Boriss, не секрет конечно. Скрипт будет выполняться несколько минут и в этот момент Лист Excel висит. Хотелось бы наглядно видеть когда выполнение скрипта закончено, а не тыкать мышкой, ожидая когда лист заработает. MsgBox в конце скрипта тоже не вариант к сожалению.

К чему нужно применять метод Refresh, чтобы правильно зарефрешить окно?
Ответы:
обновить методом Refresh() и выполнить DoEvents
Скрипт верный.
Кнопка меняет цвет именно в тот момент, как и задумывалось, просто... вы этого не можете увидеть, так как лист обновится после окончания работы скрипта. Нужно рефрешить окно после первого изменения цвета кнопки.


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.