Compartilhar via


evento QueryClose

Seja inserida antes que um UserForm feche.

Sintaxe

Private Sub UserForm_QueryClose(CancelAs Integer, CloseModeAs Integer)

A sintaxe de evento QueryClose tem essas partes:

Parte Descrição
Cancel Um número inteiro. Definir esse argumento para qualquer valor diferente de 0 interrompe o eventoQueryClose em todos os formulários de usuário carregados e impede que o UserForm e o aplicativo de fechem.
CloseMode Um valor ou constante indicando a causa do eventoQueryClose.

Valor de retorno

O argumento CloseMode retorna os seguintes valores:

Constant Valor Descrição
vbFormControlMenu 0 O usuário escolheu o comando Fechar do menu controle no UserForm.
vbFormCode 1 A instruçãoUnload é chamada de código.
vbAppWindows 2 A sessão operacional atual do Windows está terminando.
vbAppTaskManager 3 O Gerenciador de tarefas do Windows está fechando o aplicativo.

Essas constantes listadas na biblioteca de objetos do Visual Basic for Applications no Pesquisador de objetos. Observe que vbFormMDIForm também é especificado no Pesquisador de objetos, mas ainda não tem suporte.

Comentários

Geralmente, esse evento é usado para garantir que não haja tarefas inacabadas nos formulários de usuário incluídos em um aplicativo antes que o aplicativo seja fechado. Por exemplo, se um usuário não tiver salvo novos dados em nenhum no UserForm, o aplicativo pode solicitar que o usuário salve os dados.

Quando um aplicativo é fechado, você pode usar o procedimento de eventoQueryClose para definir a propriedadeCancelarcomo Verdadeira, interrompendo o processo de fechamento.

Exemplo

O seguinte código força o usuário clicar na área de cliente doUserForm. Se o usuário tentar usar a caixa Fechar na barra de título, o parâmetroCancelar será definido como um valor diferente de zero, impedindo o término. No entanto, se o usuário clicou na área de cliente CloseMode tem o valor 1 e Unload Me é executado.

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

Confira também

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.