Como Redimensionar o UserForm Utilizando o Excel VBA - Método 1
Salve, salve eu sou o Diego e hoje eu te ensinarei o primeiro método de como redimensionar o UserForm utilizando o Excel VBA. Neste método utilizaremos uma Label (Rótulo) para podermos redimensionar o UserForm e assim deixá-lo de qualquer tamanho que queiramos.
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.
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:
Private PosicaoX As Single
Private PosicaoY As Single
Private ObjForm As Object
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ó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
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.
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, selecione na Caixa de ferramentas o Label (Rótulo) e adicione ao UserForm.
6 Dê dois cliques sobre o Label ou clique com o botão direito do mouse sobre ele e selecione Exibir Código.
7 Na nova janela aberta, selecione o Objeto Label1 e em seguida clique sobre o Procedimento Click e nas opções que apareceram selecione MouseDown.
8 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 seguinte 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
9 Certificando-se que o Objeto Label1 ainda esteja selecionado clique sobre o Procedimento MouseDown e nas opções que apareceram selecione MouseMove.
10 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
11 Selecione agora o Objeto UserForm em seguida clique sobre o Procedimento Click e nas opções que apareceram selecione Initialize.
12 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
13 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.
14 Na janela Projeto – VBAProject de dois cliques sobre EstaPasta_de_trabalho.
15 Na nova janela aberta certifique-se que o Objeto Workbook e o Procedimento Open estejam selecionados.
16 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.
17 Agora basta salvar o seu projeto como tipo Pasta de Trabalho Habilitada para Macro do Excel.
18 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).
19 Pronto! Você já pode alterar o tamanho do seu UserForm utilizando o Label como redimensionador.
Comentários
Postar um comentário