Como Redimensionar o UserForm Juntamente com os Controles de Formulário Utilizando o Excel VBA - Método 1

UserForm com a possibilidade de redimensionar os controles de formulário

Salve, salve eu sou o Diego e hoje eu te ensinarei o primeiro método de como redimensionar o UserForm juntamente com os controles de formulário utilizando o Excel VBA. Neste método utilizaremos uma Label (Rótulo) para podermos redimensionar o UserForm e assim permitir que os controles de formulário sejam também alterados de tamanho.


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 InserirMó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 InserirMódulo.

Inserindo o Módulo pela janela Projeto-VBAProject

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


Private PosicaoX As Single
Private PosicaoY As Single
Private ObjForm As Object
Private FormWidth As Long
Public Sub MouseDown(Btn As Integer, Px As Single, Py As Single)
'Código que armazena a posição do ponteiro do mouse quando for clicado e segurado If Btn = 1 Then
PosicaoX = Px PosicaoY = Py
End If
End Sub
Public Sub MouseMove(Btn As Integer, Px As Single, Py As Single)
'Código que faz o redimensionamento do UserForm quando o mouse for movimentado If Btn = 1 Then
ObjForm.Label1.Move ObjForm.Label1.Left + (Px - PosicaoX), ObjForm.Label1.Top + (Py - PosicaoY) ObjForm.Width = ObjForm.Width + (Px - PosicaoX) ObjForm.Height = ObjForm.Height + (Py - PosicaoY) ObjForm.Label1.Left = ObjForm.InsideWidth - ObjForm.Label1.Width ObjForm.Label1.Top = ObjForm.InsideHeight - ObjForm.Label1.Height - 1 ObjForm.Repaint
End If
End Sub
Public Sub lblLayout(frm As Object)
'Código que armazena o nome do UserForm Set ObjForm = frm
'Código que armazena a largura do UserForm FormWidth = ObjForm.Width
'Códigos que alteram as propriedades do Label1 ObjForm.Label1.AutoSize = True ObjForm.Label1.BackStyle = fmBackStyleTransparent ObjForm.Label1.BorderStyle = fmBorderStyleNone ObjForm.Label1.Caption = "o" ObjForm.Label1.Font.Name = "Marlett" ObjForm.Label1.Font.Charset = 2 ObjForm.Label1.Font.Size = 14 ObjForm.Label1.Font.Bold = True ObjForm.Label1.ForeColor = RGB(160, 160, 160) ObjForm.Label1.Left = ObjForm.InsideWidth - ObjForm.Label1.Width ObjForm.Label1.MousePointer = fmMousePointerSizeNWSE ObjForm.Label1.Top = ObjForm.InsideHeight - ObjForm.Label1.Height - 1 ObjForm.Label1.ZOrder
End Sub
Public Sub ZControles()
Dim Z As Long
'Código que armazena o tamanho do Zoom atual Z = Round(ObjForm.Width / FormWidth * 100, 0)
'Código que define o Zoom mínimo do UserForm If Z < 100 Then Z = 100
'Código que define o Zoom máximo do UserForm If Z > 400 Then Z = 400
'Código que atribui ao UserForm o tamanho do Zoom atual ObjForm.Zoom = Z
End Sub

Códigos que permitem o redimensionamento do UserForm e dos controles de formulário

Códigos que permitem o redimensionamento do UserForm e dos controles de formulário

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

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

Inserindo o UserForm pela janela Projeto-VBAProject

5 Com o nosso UserForm criado, insira a primeira label, com a Label1 inserida não a altere ou renomeia somente deixe a de lado por enquanto, desenvolva o formulário como é mostrado nas imagens abaixo. (Você pode baixar o exemplo completo no final deste post). Após o desenvolvimento do formulário dê dois cliques sobre o Label1 ou clique com o botão direito do mouse sobre ele e selecione Exibir Código.

Inserindo a Label1 no formulário

Clicando e exibindo os códigos da Label1

6 Na nova janela aberta selecione o Objeto Label1 em seguida clique sobre o Procedimento Click e nas opções que apareceram selecione MouseDown.

Inserindo a sub MouseDown

7 Dentro da sub Private Sub Label1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) ... End Sub insira o código:

Private Sub Label1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)


    'Código que chama a sub que irá detectar se o mouse está clicado e segurado
    Call MouseDown(Button, X, Y)

End Sub

Chamando a sub MouseDown

8 Ainda com o Objeto Label1 selecionado, clique sobre o Procedimento MouseDown e nas opções que apareceram selecione MouseMove.

Inserindo a sub MouseMove

9 Dentro da sub Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) ... End Sub insira o código:

Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)


    'Código que chama a sub que permite o redimensionamento do UserForm
    Call MouseMove(Button, X, Y)

End Sub

Chamando a sub MouseMove

10 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

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

Private Sub UserForm_Initialize()


    'Código que chama a sub que irá alterar as propriedades atuais do Label1
    Call lblLayout(Me)

End Sub

Chamando a sub lblLayout

12 Ainda com o Objeto UserForm selecionado, clique sobre o Procedimento Initialize e nas opções que apareceram selecione Resize.

Inserindo a sub Resize

13 Dentro da sub Private Sub UserForm_Resize() ... End Sub insira o código:

Private Sub UserForm_Resize()


    'Código que chama a sub que controla o Zoom do UserForm
    Call ZControles

End Sub

Chamando a sub ZControles

14 Agora selecione e apague as seguintes sub Private Sub Label1_Click() ... End Sub e a Private Sub UserForm_Click() ... End Sub pois não as utilizaremos.

Apagando a sub Private Sub Label1_Click e a sub Private Sub UserForm_Click

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

Abrindo a janela EstaPasta_de_trabalho

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

Selecionado o objeto Workbook e o procedimento Open

17 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

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

Salvando o projeto

19 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

20 Pronto! Você já pode redimensionar o UserForm e os Controles de Formulário com a Label criada.

UserForm com a possibilidade de redimensionar os controles de formulário

UserForm com a possibilidade de redimensionar os controles de formulário

UserForm com a possibilidade de redimensionar os controles de formulário

Download:

Como Redimensionar o UserForm Juntamente com os Controles de Formulário Utilizando o Excel VBA - Método 1.zip

Comentários

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