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

Salve, salve eu sou o Diego e hoje eu te ensinarei a como habilitar os botões minimizar e maximizar e redimensionar o tamanho do userform no excel vba. Neste método nós utilizaremos algumas APIs (Applications Programming Interface) do Windows para habilitar os botões minimizar e maximizar da janela do UserForm além de poder redimensiona-lo, isso é uma boa dica para quem quer deixar o seu formulário com um aspecto profissional além de deixar o UserForm mais flexível.


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.

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.

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

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

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


'Função que retornará o nome da classe e o nome do UserForm
Private Declare PtrSafe Function FindWindow Lib "User32" Alias "FindWindowA" (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 GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
'Função que altera o estilo da janela do UserForm Private Declare PtrSafe Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
'Sub que irá obter o nome do UserForm (ObjForm) Sub HabilitaBotoes(ObjForm As Object)
'Código que atribui os botões minimizar e maximizar e possibilita redimensionar o UserForm SetWindowLong FindWindow("ThunderDFrame", ObjForm.Caption), -16, GetWindowLong(FindWindow("ThunderDFrame", ObjForm.Caption), -16) Or &H10000 Or &H20000 Or &H40000
End Sub

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

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 a imagem abaixo.

Na barra de menus clique em Inserir > UserForm.

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

5. Com o nosso UserForm criado de dois cliques sobre ele ou clique com o botão direito do mouse em cima dele e nas opções que aparecerem clique em Exibir Código.

6. Na janela que apareceu certifique-se que o Objeto UserForm esteja selecionado, em seguida clique sobre o Procedimento Click e nas opções que apareceram selecione Initialize.

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

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

Private Sub UseForm_Initialize()


    'Chama a sub que contém os atributos para habilitar os botões
    'minimizar e maximizar e possibilita redimensionar o UserForm
    Call HabilitaBotoes(Me)

End Sub

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

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

11. 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
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.

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

13. 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).

14. Pronto! O UserForm já iniciará com os botões Minimizar e Maximizar e com a possibilidade de ser redimensionável.

Comentários

  1. Não funcionou... segui passo a passo! Mas obrigado pela explicação, pelo menos não deu erro

    ResponderExcluir
  2. Bom dia,
    Segui passo à passo e comigo funcionou. Show. Obrigado.

    ResponderExcluir
  3. Este comentário foi removido pelo autor.

    ResponderExcluir
  4. Olá Diego !

    Deu certo o meu. Perfeito.

    Apenas uma dúvida, gostaria de abrir o formulario já maximizado. Como faço ? Obrigado !
    evaldo.almeidasoares@gmail.com

    ResponderExcluir
    Respostas
    1. Olá Evaldo, confira esses 3 links abaixo espero te ajudado:
      https://dmaisideias.blogspot.com/2018/06/como-deixar-o-userform-maximizado-no.html
      http://dmaisideias.blogspot.com/2018/07/como-deixar-o-userform-maximizado-no.html
      https://dmaisideias.blogspot.com/2018/08/como-deixar-o-userform-maximizado-no.html

      Excluir
  5. Muito bom, funcionou. Muito obrigado.

    ResponderExcluir
  6. Boa noite,

    Mesmo minimizando, minha outra pasta de trabalho fica inutilizada, eu consigo minimizar o form e utilizar outra pasta de trabalho?

    ResponderExcluir
  7. Resolveu meu Problema! Sensacional, Parabéns!

    ResponderExcluir
  8. Excelente, e tem como expandir os textbox? e os demais

    ResponderExcluir
  9. Sensacional, funcionou perfeitamente! Obrigado por postar essas dicas.

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

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