Для "пришельцев" с поисковых систем. Пауза для скрипта VBA с возможностью продолжения. Вложение "Пауза для скрипта с возможностью продолжения.xlsm"
Во вложении итоговый код (скрипт) на VBA, который решает задачу:
Поставить скрипт на паузу, показать окно продолжения (НЕ модальное)
Пользователь может сделать любые действия в Excel, не прерывая сам скрипт
Продолжить скрипт по нажатию "Ок" / прервать скрипт по нажатию на "Выход" или "крестик"
Первоначальный вопрос. Вложение "Выход.xlsm" с ошибкой, прерывание скрипта еще не реализовано.
Скрытый текст
Есть большой скрипт. В определенный момент мне надо выбрать 1-n-все листы в книге для дальнейшей работы. Все работает так, как мне надо — пока висит диалоговое окно, я могу выполнять любые действия в рабочей книге, в том числе и выделять листы.
Не могу реализовать выход=) "Крестик" убирает форму, не прерывая скрипт. Тогда попробовал сделать кнопку "Выход", повесив на нее "Exit Sub"
Exit Sub срабатывает в другой процедуре Sub CommandButton3_Click(), и, конечно, не делает "Выход" из основного скрипта. Пробовал передавать "флаг" — тоже не срабатывает, хотя переменная TheEnd объявлена глобально.
В чем ошибка? Как сделать, чтобы Exit Sub срабатывал при нажатии "Выход" и при нажатии на "крестик" в правом верхнем углу? Или как еще можно полностью остановить скрипт нажатием на кнопку "выход" или на "крестик"?
heso, нет, так как как раз, пока форма Visible, я через DoEvents могу выполнять любые действия в книге, так как окно UserForm1 НЕ модальное.
Казанский, я понял ошибку с "глобальностью", и спасибо за "выход"! Хочется еще, чтобы при нажатии на "крестик" так же была остановка скрипта. Сейчас же поведение такое, как будто я просто скрываю форму. Никто не знает, можно ли как-то перехватывать нажатие на "крестик"?
Как вариант, можно попробовать сделать наоборот, делать "выход" по условию "UserForm1 = invisible, но тогда как мне реализовать по-другому задачу "поставить скрипт на паузу, сделать действия в книге, продолжить скрипт"?
zamboga написал: можно ли как-то перехватывать нажатие на "крестик"?
у формы есть прямо событие соответствующее - QueryClose, даже с параметром, который дает понять было закрытие крестиком инициировано или выгрузка формы была совершена иным способом(Unload на кнопке, например).
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Для "пришельцев" с поисковых систем. Пауза для скрипта VBA с возможностью продолжения. Во вложении итоговый код (скрипт) на VBA, который решает задачу:
Поставить скрипт на паузу, показать окно продолжения (НЕ модальное)
Пользователь может сделать любые действия в Excel, не прерывая сам скрипт
Продолжить скрипт по нажатию "Ок" / прервать скрипт по нажатию на "Выход" или "крестик"