O evento `QueryClose` em VBA é usado para capturar o momento em que um formulário está prestes a ser fechado. Geralmente, ele é utilizado em formulários do Microsoft Access ou UserForms em Excel para executar código antes que o fechamento ocorra, permitindo que você cancele o fechamento ou realize ações de limpeza.
Aqui está um guia sobre como usar o evento `QueryClose`:
No Microsoft Access:
O evento `QueryClose` não é diretamente disponível em formulários do Access como em Excel, mas você pode usar `Unload` ou `Close` para manipular o fechamento do formulário.
No Excel:
Para um UserForm em Excel VBA, o evento que você deve usar é `QueryClose`. Aqui está um exemplo de como utilizá-lo:
- Abra o Editor do VBA:
- Pressione `ALT` + `F11` para abrir o Editor do VBA no Excel.
- Insira um UserForm:
- No menu, clique em `Inserir` e depois em `UserForm`.
- Acesse o código do UserForm:
- Dê um duplo clique sobre o UserForm que você criou para acessar a janela de código.
- Implemente o evento `QueryClose`:
Aqui está um exemplo de código:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
' Verifique se o formulário está sendo fechado pelo usuário (e não pelo sistema)
If CloseMode = vbFormControlMenu Then
' Exibe uma mensagem para confirmar se o usuário realmente quer fechar
If MsgBox("Você realmente deseja fechar o formulário?", vbYesNo + vbQuestion) = vbNo Then
' Cancela o fechamento do formulário
Cancel = True
End If
End If
End Sub
Explicação do Código:
- Testar o UserForm:
- Execute o UserForm pressionando `F5` ou clicando em `Executar` -> `Executar Sub/UserForm`.
Com este exemplo, ao tentar fechar o formulário, será exibida uma mensagem perguntando se o usuário realmente deseja fechar o formulário. Se o usuário selecionar “Não”, o fechamento será cancelado.
Você pode personalizar o código dentro do `QueryClose` para realizar qualquer lógica adicional necessária antes do fechamento do formulário.