Поделиться через


Событие QueryClose

Происходит до закрытия UserForm .

Синтаксис

Частный вложенный UserForm_QueryClose(Cancelas Integer, CloseModeas Integer)

Синтаксис события QueryClose содержит следующие элементы:

Part Описание
Отмена Параметр SyncSchedule указывает ???. Допустимые значения этого параметра: Установка для этого аргумента любого значения, отличного от 0, останавливает событие QueryClose во всех загруженных пользовательских формах и предотвращает закрытие UserForm и приложения.
CloseMode Значение или константы , указывающие причину события QueryClose .

Возвращаемые значения

Аргумент CloseMode возвращает следующие значения:

Константа Значение Описание
vbFormControlMenu 0 Пользователь выбрал команду Close (Закрыть) в меню элементов управления Control для UserForm.
vbFormCode 1 Оператор Unload (Загрузить) вызывается из кода.
vbAppWindows 2 Текущий сеанс операционной среды Windows подходит к концу.
vbAppTaskManager 3 Окно Диспетчер задач закрывается в приложении.

Эти константы перечислены в библиотеке объектов Visual Basic для приложений в браузере объектов Object Browser. Обратите внимание, что vbFormMDIForm также указывается в Object Browser, но еще не поддерживается.

Замечания

Это событие обычно используется, чтобы убедиться, что в пользовательских формах нет незавершенных задач, добавленных в приложение перед его закрытием. Например, если пользователь не сохранил новые данные ни в одной из форм UserForm, приложение предложит пользователю сохранить данные.

При закрытии приложения можно использовать процедуру события QueryClose для задания свойству Cancel (Отмена) значения истины True, прекращая процесс закрытия.

Пример

Следующий код заставляет пользователя щелкнуть область клиента UserForm , чтобы закрыть ее. Если пользователь пытается использовать поле Close (Закрыть) в строке заголовка, параметр Cancel, имеющий ненулевое значение, предотвращает закрытие. Однако если пользователь щелкнул клиентую область, closeMode имеет значение 1 и Unload Me выполняется.

Private Sub UserForm_Activate()
    Me.Caption = "You must Click me to kill me!"
End Sub

Private Sub UserForm_Click()
  Unload Me
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    'Prevent user from closing with the Close box in the title bar.
    If CloseMode <> 1 Then Cancel = 1
    Me.Caption = "The Close box won't work! Click me!"
End Sub

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.