Страницы: 1
RSS
Не могу прервать выполнение процедуры по нажатии кнопки или по "крестику"
 
Для "пришельцев" с поисковых систем. Пауза для скрипта VBA с возможностью продолжения.
Вложение "Пауза для скрипта с возможностью продолжения.xlsm"

Во вложении итоговый код (скрипт) на VBA, который решает задачу:
  • Поставить скрипт на паузу, показать окно продолжения (НЕ модальное)
  • Пользователь может сделать любые действия в Excel, не прерывая сам скрипт
  • Продолжить скрипт по нажатию "Ок" / прервать скрипт по нажатию на "Выход" или "крестик"

Первоначальный вопрос. Вложение "Выход.xlsm" с ошибкой, прерывание скрипта еще не реализовано.
Скрытый текст
Изменено: zamboga - 10.12.2016 14:02:43
 
Так не пойдет?
Вставить в ваш цикл While вместо отслеживания состояния TheEnd следущее:
Код
If UserForm1.Visible = False Then Exit Sub
Изменено: heso - 09.12.2016 20:37:26
 
Цитата
zamboga написал:
переменная TheEnd объявлена глобально
Не-а :) Поставьте Option Explicit в код формы и увидите. Глобально переменная объявляется так:
Код
Public TheEnd As Boolean
А вообще, немедленное окончание работы программы это End (не End Sub, а просто End).
Код
Private Sub CommandButton3_Click()
  End
End Sub
Изменено: Казанский - 09.12.2016 21:12:21
 
heso, нет, так как как раз, пока форма Visible, я через DoEvents могу выполнять любые действия в книге, так как окно UserForm1 НЕ модальное.

Казанский, я понял ошибку с "глобальностью", и спасибо за "выход"!
Хочется еще, чтобы при нажатии на "крестик" так же была остановка скрипта. Сейчас же поведение такое, как будто я просто скрываю форму.
Никто не знает, можно ли как-то перехватывать нажатие на "крестик"?

Как вариант, можно попробовать сделать наоборот, делать "выход" по условию "UserForm1 = invisible, но тогда как мне реализовать по-другому задачу "поставить скрипт на паузу, сделать действия в книге, продолжить скрипт"?
 
Цитата
zamboga написал:
можно ли как-то перехватывать нажатие на "крестик"?
у формы есть прямо событие соответствующее - QueryClose, даже с параметром, который дает понять было закрытие крестиком инициировано или выгрузка формы была совершена иным способом(Unload на кнопке, например).
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist,спасибо, разобрался!

Для "пришельцев" с поисковых систем. Пауза для скрипта VBA с возможностью продолжения.
Во вложении итоговый код (скрипт) на VBA, который решает задачу:
  • Поставить скрипт на паузу, показать окно продолжения (НЕ модальное)
  • Пользователь может сделать любые действия в Excel, не прерывая сам скрипт
  • Продолжить скрипт по нажатию "Ок" / прервать скрипт по нажатию на "Выход" или "крестик"
Изменено: zamboga - 12.12.2016 00:29:32
Страницы: 1
Наверх