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.