Como Mover o UserForm Por Uma Nova Barra de Título Utilizando o Excel VBA

Nova barra de título que movimenta o UserForm

Salve, salve eu sou o Diego e hoje eu te ensinarei a como mover o UserForm por uma nova barra de título utilizando o Excel VBA. Neste método utilizaremos uma Label (Rótulo) para podermos movimentar ou mover o UserForm para qualquer parte da tela sem precisar utilizar a barra de título padrão do sistema operacional.


Veja Também:

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

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


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

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


Sub MouseMove(ObjForm As Object, Btn As Integer, Px As Single, Py As Single)

    'Código que atribui a posição do movimento do mouse ao UserForm
    If Btn And 1 Then
        ObjForm.Left = ObjForm.Left + (Px - PosicaoX)
        ObjForm.Top = ObjForm.Top + (Py - PosicaoY)
    End If
End Sub

Códigos que permitem a movimentação do UserForm pela nova barra de título

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 e selecionado vá até a propriedade Caption e renomeie o campo Userform1 para Antiga Barra de Título.

Renomeando a Caption do UserForm

6 Após renomear o título do UserForm selecione na Caixa de ferramentas o Label (Rótulo) e adicione ao UserForm.

Inserindo um Label(Rótulo) ao UserForm

7 Com o Label (Rótulo) selecionado, na caixa de Propriedades – Label1, altere os seguintes campos, BackColor: &H0000C000&, BorderColor: &H0000C000&, Caption: Nova Barra de Título, Font: Segoe UI, ForeColor: &H00FFFFFF&, Height: 48, Left: 0, Top: 0 e Width: 240.

Alterando as propriedades do Label1

Dica: Caso você queira deixar o texto do label mais centralizado como é mostrado na imagem acima, clique uma vez sobre o label e quando o cursor estiver piscando sobre ele basta segurar as teclas Shift + Enter para pular uma linha e logo em seguida dê dois ou mais espaços para que o texto não fique encostado no canto da tela.

8 Agora dê dois cliques sobre o Label (Rótulo) ou clique com o botão direito do mouse sobre ele e selecione Exibir Código.

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

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

Inserindo a sub MouseDown

10 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) ... End Sub


    '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

11 Certificando-se que o Objeto Label1 ainda esteja selecionado clique sobre o Procedimento MouseDown e nas opções que apareceram selecione MouseMove.

Inserindo a sub MouseMove

12 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 movimento do UserForm pela nova barra de título
    Call MouseMove(Me, Button, X, Y)

End Sub

Chamando a sub MouseMove

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

Apagando a sub Private Sub Label1_Click

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

Abrindo a janela EstaPasta_de_trabalho

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

Selecionado o objeto Workbook e o procedimento Open

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.

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

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

Salvando o projeto

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

Habilitando as macros

19 Pronto! Você já pode movimentar o UserForm pela Nova Barra de Título.

Nova barra de título que movimenta o UserForm

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