Como Remover o Botão Fechar do UserForm no Excel VBA

UserForm sem o botão fechar na barra de título

Salve, salve eu sou o Diego e hoje eu te ensinarei a como remover o botão fechar do UserForm no Excel VBA. Neste método nós utilizaremos algumas API (Applications Programming Interface) do Windows para remover o botão fechar da barra de título do UserForm, fazendo com que o usuário não o visualize e busque outras maneiras de fechar o formulário. Lembrando que esse método não funciona se o usuário utilizar as teclas de atalho ALT + F4.


Veja Também:

Como Desativar o Botão Fechar do UserForm no Excel VBA


Para esse nosso teste eu estarei utilizando o Excel 2013 versão 64bits.

Com o Excel aberto basta seguir o passo a passo mostrado abaixo:

1. Clique na aba Desenvolvedor (caso a aba Desenvolvedor esteja desabilitado clique aqui e veja o tutorial como habilita-la) em seguida clique no botão Visual Basic ou utilize as teclas de atalho do teclado ALT + F11.

Abrindo o ambiente do VBE (Visual Basic Editor)

2. Com o VBE (Visual Basic Editor) aberto iremos inserir um Módulo, basta escolher um dos métodos abaixo que funcionará perfeitamente:

Na barra de ferramentas clique sobre a seta ao lado do ícone Inserir UserForm e nas opções que aparecerem clique em Módulo.

Inserindo o Módulo pela barra de ferramentas

Na barra de menus clique em Inserir > Módulo.

Inserindo o Módulo pela barra de menus

Dentro da janela Projeto – VBAProject clique com o botão direito do mouse e nas opções que aparecerem clique em Inserir > Módulo.

Inserindo o Módulo pela janela Projeto-VBAProject

3. Dentro do Módulo1 que foi criado coloque o seguinte código:


'Função que retornará um identificador para o UserForm que possui o nome da classe e o nome do UserForm
Private Declare PtrSafe Function FindWindowA Lib "User32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
'Função que recupera as informações sobre o nome da classe e o estilo da janela do UserForm Private Declare PtrSafe Function GetWindowLongA Lib "User32" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
'Função que altera o estilo da janela do UserForm Private Declare PtrSafe Function SetWindowLongA Lib "User32" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
'Função que redesenha a barra de título do UserForm Private Declare PtrSafe Function DrawMenuBar Lib "User32" (ByVal hWnd As Long) As Long
Sub RemoveBotao(ObjForm As Object)
'Código que remove o botão Fechar do UserForm SetWindowLongA FindWindowA("ThunderDFrame", ObjForm.Caption), -16, GetWindowLongA(FindWindowA("ThunderDFrame", ObjForm.Caption), -16) And &HFFF7FFFF
'Código que atualiza a barra de título do UserForm sem o botão Fechar DrawMenuBar FindWindowA("ThunderDFrame", ObjForm.Caption)
End Sub

Obs.: Caso você esteja usando o Excel versão 32bits remova o atributo PtrSafe das funções Private Declare PtrSafe Function....

Código para remover o botão fechar do UserForm

4. Agora iremos inserir um UserForm para isso basta você escolher uma das opções abaixo:

Na barra de ferramentas clique sobre o ícone Inserir UserForm (caso você não esteja vendo o ícone de inserir um UserForm basta clicar na seta ao lado do ícone) como mostra na imagem abaixo.

Inserindo o UserForm pela barra de ferramentas

Na barra de menus clique em Inserir > UserForm.

Inserindo o UserForm pela barra de menus

Dentro da janela Projeto – VBAProject clique com o botão direito do mouse e nas opções que aparecerem clique em Inserir > UserForm.

Inserindo o UserForm pela janela Projeto-VBAProject

5. Com o nosso UserForm criado selecione na Caixa de ferramentas o CommandButton e adicione-o ao UserForm, com o CommandButton adicionado selecione-o e nas propriedades do botão renomeie o campo Caption para Fechar, após fazer isso de dois clique sobre o botão.

Adicionando, alterando e exibindo o código do CommandButton no UserForm

6. Na nova janela aberta dentro da sub Private Sub CommandButton1_Click() ... End Sub insira o seguinte código:

Private Sub CommandButton1_Click()


    'Fecha o UserForm
    Unload Me

End Sub

Inserindo o código no procedimento click do CommandButton1

7. Após inserir o código, selecione o Objeto UserForm, em seguida clique sobre o Procedimento Click e nas opções que aparecerem selecione Initialize.

Inserindo a sub Initialize

8. Selecione e apague a sub Private Sub UserForm_Click() ... End Sub pois não a utilizaremos.

Apagando a sub Private Sub UserForm_Click

9. Dentro da sub Private Sub UserForm_Initialize() ... End Sub insira o seguinte código:

Private Sub UseForm_Initialize()


    'Código que chama a sub que irá remover o botão Fechar do UserForm ao ser inicializado
    Call RemoveBotao(Me)

End Sub

Inserindo o código na inicialização do UserForm

10. Na janela Projeto – VBAProject de dois cliques sobre EstaPasta_de_trabalho.

Abrindo a janela EstaPasta_de_trabalho

11. Na nova janela aberta certifique-se que o Objeto Workbook e o Procedimento Open estejam selecionados.

Selecionado o objeto Workbook e o procedimento Open

12. Dentro da sub Private Sub Workbook_Open () ... End Sub insira o seguinte código:

Private Sub Workbook_Open()


    'Força a Maximização do Excel ao ser inicializado
    Application.WindowState = xlMaximized

    'Exibe o UserForm1
    UserForm1.Show

End Sub

Dica: Caso você queira deixar o Excel em fullscreen (tela cheia) ao invés de maximizado ao ser aberto, basta trocar o comando Application.WindowState=xlMaximmized por Application.DisplayFullScreen = True.

Inserindo o código na inicialização do Excel

13. Agora basta salvar o seu projeto como tipo Pasta de Trabalho Habilitada para Macro do Excel.

Salvando o projeto

14. Após salvar o seu projeto feche-o e abra-o novamente (caso as macros do Excel estejam desabilitadas basta clicar no botão Habilitar Conteúdo).

Habilitando as macros

15. Pronto! O UserForm já iniciará sem o botão fechar.

UserForm sem o botão fechar na barra de título

Comentários

  1. Muito bom. funcionou perfeitamente. Parabéns pelo site, porque é bem didático e fácil de entender. Obrigado.

    ResponderExcluir
  2. Ótima explicação. funcionou direitinho. Obrigado pela aula.

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

Como Habilitar os Botões Minimizar e Maximizar e Redimensionar o Tamanho do UserForm no Excel VBA