Como Criar Botões para Minimizar, Maximizar, Restaurar e Fechar o UserForm Utilizando o Excel VBA

UserForm com botões para minimizar, maximizar, restaurar e fechar a janela

Salve, salve eu sou o Diego e hoje eu te ensinarei a como criar botões para minimizar, maximizar, restaurar e fechar o UserForm utilizando o Excel VBA. Neste método nós utilizaremos algumas API (Applications Programming Interface) do Windows para que possamos com isso criar nossos próprios botões personalizados dos botões minimizar, maximizar, restaurar e fechar.


Veja Também:

Como Remover a Barra de Título do UserForm Utilizando o Excel VBA

Como Minimizar o UserForm Para Barra de Tarefas do Windows Utilizando o 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 define o estado de exibição do UserForm Private Declare PtrSafe Function ShowWindow Lib "User32" (ByVal hWnd As Long, ByVal nCmdShow 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 ExibirBotoes(ObjForm As Object)
'Código que atribui os botões minimizar e maximizar a barra de título do UserForm SetWindowLongA FindWindowA("ThunderDFrame", ObjForm.Caption), -16, GetWindowLongA(FindWindowA("ThunderDFrame", ObjForm.Caption), -16) Or &H10000 Or &H20000
'Código que atualiza o UserForm exibindo-o com os botões minimizar e maximizar DrawMenuBar FindWindowA("ThunderDFrame", ObjForm.Caption)
End Sub Sub EstadoExibicao(ObjForm As Object, Nro As Integer)
'Código que exibe o UserForm em estados como minimizado, maximizado ou restaurado ShowWindow FindWindowA("ThunderDFrame", ObjForm.Caption), Nro
End Sub

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

Códigos que permitem o UserForm ser minimizado, maximizado, restaurado e fechado

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 quatro botões ao UserForm.

Adicionando quatro CommandButton (botões) ao UserForm

6 Selecione o CommandButton1 e nas propriedades do botão renomeie o campo Caption para Minimizar.

Renomeando o CommandButton1 para minimizar

7 Agora repita o mesmo processo anterior com os outros botões, selecionando o botão e renomeando o campo Caption. Renomeie o CommandButton2 para Maximizar, o CommandButton3 para Minimizar e o CommandButton4 para Fechar.

Renomeando o CommandButton2 para maximizar

Renomeando o CommandButton3 para restaurar

Renomeando o CommandButton4 para fechar

8 Clique com o botão direito do mouse em cima do UserForm e selecione Exibir Código.

Clicando com o botão direito do mouse e exibindo o código do UserForm

9 Agora selecione o Objeto UserForm e em seguida clique sobre o Procedimento Click e nas opções que apareceram selecione Initialize.

Inserindo a sub Initialize

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

Private Sub UserForm_Initialize()


    'Código que chama a sub que irá atribuir os botões minimizar e maximizar a barra de título do UserForm
    Call ExibirBotoes(Me)

End Sub

Chamando a sub ExibirBotoes

11 Selecione agora o Objeto CommandButton1 e dentro da sub Private Sub CommandButton1_Click() ... End Sub insira o seguinte código:

Private Sub CommandButton1_Click()


    'Código que minimiza o UserForm
    Call EstadoExibicao(Me, 6)

End Sub

Selecionando o Objeto CommandButton1

Inserindo o código na sub CommandButton1_Click

12 Selecione o Objeto CommandButton2 e dentro da sub Private Sub CommandButton2_Click() ... End Sub insira o código:

Private Sub CommandButton2_Click()


    'Código que maximiza o UserForm
    Call EstadoExibicao(Me, 3)

End Sub

Selecionando o Objeto CommandButton2

Inserindo o código na sub CommandButton2_Click

13 Selecione o Objeto CommandButton3 e dentro da sub Private Sub CommandButton3_Click() ... End Sub insira o código:

Private Sub CommandButton3_Click()


    'Código que restaura o tamanho original do UserForm
    Call EstadoExibicao(Me, 9)

End Sub

Selecionando o Objeto CommandButton3

Inserindo o código na sub CommandButton3_Click

14 E finalmente selecione o Objeto CommandButton4 e dentro da sub Private Sub CommandButton4_Click() ... End Sub insira o código:

Private Sub CommandButton4_Click()


    'Código que fecha o UserForm
    Unload Me

End Sub

Selecionando o Objeto CommandButton4

Inserindo o código na sub CommandButton4_Click

15 Agora selecione e apague a sub Private Sub UserForm_Click() ... End Sub pois não a utilizaremos.

Apagando a sub Private Sub UserForm_Click

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

Abrindo a janela EstaPasta_de_trabalho

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

Selecionado o objeto Workbook e o procedimento Open

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

Private Sub Workbook_Open()


    'Código que força a Maximização do Excel ao ser inicializado
    Application.WindowState = xlMaximized 
'Código que exibe o UserForm1 UserForm1.Show
End Sub

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

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

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

Salvando o projeto

20 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

21 Pronto! Os botões já podem ser utilizados para minimização, maximização, restauração e fechamento do UserForm.

UserForm com botões para minimizar, maximizar, restaurar e fechar a janela

Comentários

  1. Boa tarde. Antes de mais quero agradecer pelo excelente trabalho. Relativamente a esta API, já fiz os passos todos, contudo, o X (fechar) da barra superior do formulário não fecha completamente o Excel. Existe alguma solução para este problema? Obrigado!

    ResponderExcluir
    Respostas
    1. Utilize o código a seguir para fechar o Excel completamente: Application.Quit

      Excluir

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

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