fechar

Aprender Excel

APRENDER EXCEL

DICAS E NOVIDADES SOBRE EXCEL

Como remover o botão de fechar ('x') nos forms do Excel

por: Maximiliano Meyer em VBA, no dia 28/04 | 12:01

Hoje recebi um pedido por e-mail que pedia para ensinar a remover o 'x' de fechar um formulário. Por mais estranho que pareça, o recurso existe e você vai aprender agora.

Veja como remover o 'salvar como' das suas planilhas

Com esse código o usuário não vai poder fechar uma janela de preenchimento obrigatório, por exemplo. Muito útil para a criação de cadastros.

Sem mais delongas, vamos ao código e à aula. No exemplo vou usar um UserForm muito simples, na verdade vazio. Mas é apenas para exemplos. Se funciona com um modelo vazio, funciona com qualquer modelo, certo?

O código é o mesmo, mas teremos 2 modos de apresentar o bloqueio ao usuário: No primeiro exibiremos uma caixa de diálogo sempre que ele clicar no X onde você poderá inserir uma mensagem, como 'É obrigatório o preenchimento dos dados', por exemplo. No segundo modo nada acontece ao clicar no X.

As linhas de comando são:

Private Sub UserForm_QueryClose _
   (Cancel As Integer, CloseMode As Integer)
   If CloseMode = vbFormControlMenu Then
     '  MsgBox "Preencha os dados e clique em OK", vbCritical, "AVISO"
        Cancel = True
   End If
End Sub

Para inseri-lo no local correto você deve clicar com o botão direito no nome do seu UserForm, clicar em "Exibir código" e colá-lo lá.

Veja que na iamgem acima eu coloquei a aspas simples antes da linha de mensagem. Este processo desabilita a linha, ou seja, é o segundo caso que falamos há pouco, quando o usuário poderá dar cliques infinitos e nada irá ocorrer. E aqui você aprende tudo sobre as caixas de texto e mensagens do VBA.

Confira abaixo os 2 casos exemplificados em GIFs:

Um último detalhe: Cuidado para não testar o form sem estar com o botão que irá fechar o mesmo habilitado ou estar com o modo de edição de VBA aberto. Do contrário você não conseguirá fechar a janela e vai ter de fechar o Excel de maneira forçada, perdendo todas as alterações não salvas.