AS EMPRESAS ESTÃO "DESESPERADAS" POR ESTE TIPO DE PROFISSIONAL... - VOCÊ É UM DELES?

MEGA FORMAÇÃO EM INFRAESTRUTURA DE TI - O Conhecimento que Vira Dinheiro - CLIQUE AQUI

Você está em: PrincipalArtigosSérie "Como Fazer": Menus no Excel › Lições : 11
Quer receber novidades e e-books gratuitos?
« Anterior Δ Página principal ¤ Índice Próxima »
Criando menus, barras de comando e botões personalizados no Excel usando VBA
Autor: Robert Friedrick Martim
Lição 010 - Criando um Menu com Controle Edit

Um menu que pode ser bastante útil é o controle Edit. Como o nome sugere, ele é um controle de edição. Imagine uma caixa de texto, como a barra de fórmula, onde você pode digitar algo. Pois bem, o controle Edit serve exatamente para isso.

Muitas vezes, utilizamos um formulário para solicitar a senha e nome de usuário para acesso em um documento Excel. Ao invés de utilizar tal ferramenta, poderíamos criar o menu como segue:

Figure 0‑4

Nele, o usuário digita a senha e o nome para login. Ao clicar OK a autenticação é feita e o usuário pode ou não acessar o documento.

O problema deste tipo de senha é que o código precisa ser rodado para a construção do menu. Sem isso, o usuário continua tendo acesso ao documento. Porém, a idéia acima é apenas para estudo do leitor. O que estarei fazendo é algo diferente, pois o assunto acima já havia discutido no fórum.

A idéia é criar um código que nos dê informações em um menu popup quando clicamos em uma célula qualquer. Veja a figura:

Figure 0‑5

Quando o usuário clica com o botão direito do mouse sobre uma célula um popup contendo informações sobre a célula é ativado.

A criação de um menu popup já foi discutida anteriormente, porém, aqui, estarei utilizando uma forma diferente para acessar o menu de atalho. Se você ainda lembra do tópico, o menu de atalho é chamado através do método Union.

No exemplo que segue, utilizarei uma função para determinar se o menu deve ao não aparecer. Esta é uma forma de introduzir ao leitor coisas novas que serão úteis no futuro em outros códigos que você eventualmente criará.

Para iniciar, iremos criar o código que construirá e removerá o popup quando a pasta for aberta e fechada. Abra o VBE da pasta de trabalho onde você deve inserir os códigos:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    Call delPopup

End Sub

 

Private Sub Workbook_Open()

    Call mnuPopup

End Sub

O segundo passo requer a criação do código que mostrará o menu quando clicarmos com o botão direito sobre uma área em uso da planilha. Abra o VBE da planilha onde o seguinte código deve ser inserido:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _

    Cancel As Boolean)

'   Cancela o evento padrão do Excel para o botão direito

    Cancel = True

   

'   Se a célula nao estiver em uso

    If Not emUso(ActiveCell.Address) Then

'   Nao cancelar o evento padrao para o botão direito do mouse

    Cancel = False

'       Sair da rotina

        Exit Sub

    Else:

'       Se a célula estiver em uso

'       Chamar a rotina "Info"

        Call info

'       Mostrar o popup

        CommandBars("POPUP").ShowPopup

    End If

End Sub

 


Private Function emUso(endereco As String) As Boolean

'   Dimensiona o objeto cél

    Dim cél As Range

   

'   Define o resultado inicial da função como falso

    emUso = False

   

'   Checar em cada célula se ...

    For Each cél In ActiveSheet.UsedRange

'       o endereco da célula ativa pertence ao

'       conjunto de células usadas

        If endereco = cél.Address Then

'           Se pertencer, o resultado da função

'           é verdadeiro

            emUso = True

'           Termina a função

            Exit Function

        End If

    Next cél

End Function

Finalmente, estamos prontos para o código que criará o menu. Como o código contém os mesmos objetos que apresentados anteriormente ele não está comentado:

Sub mnuPopup()

 

    Dim mnu     As CommandBar

    Dim edit    As CommandBarControl

    Dim btn     As CommandBarButton

   

    On Error Resume Next

    CommandBars("POPUP").Delete

 

    Set mnu = CommandBars.Add(Name:="POPUP", Position:=msoBarPopup)

   

    Set btn = mnu.Controls.Add(Type:=msoControlButton)

        With btn

            .Caption = "INFO SOBRE ESTA CÉLULA E ARQUIVO"

            .Width = 40

            .Enabled = False

        End With

           

    For i = 1 To 4

        Set edit = mnu.Controls.Add(Type:=msoControlEdit)

            edit.Width = 200

    Next i

 

    With mnu

        .Width = 200

        .Protection = msoBarNoChangeDock + msoBarNoCustomize _

          + msoBarNoResize

    End With

 

End Sub

O menu contém quatro controles Edit. Para adicioná-los utilizo um loop, pois todos são exatamente iguais.

Com esta parte fora do caminho, precisamos adicionar a rotina “Info” que é chamada quando o clique direito ocorre. Esta rotina irá adicionar a informações da célula aos controles Edit contidos no popup:

Sub info()

 

    Dim ctl     As CommandBarControl

   

    With CommandBars("POPUP").Controls

        On Error Resume Next

'       Se a célula nao contém fórmula...

        If ActiveCell.Formula = "" Then

'           mostre o texto "Esta célula não contém fórmula"

'           no controle Edit

            .Item(2).Text = "Esta célula não contém fórmula"

 

'       Caso contrário...

        ElseIf ActiveCell.Locked = True Then

'           Mostrar a fórmula da célula selecionada

            .Item(2).Text = "Fórmula: " & ActiveCell.Formula

        End If

'       Adicionar o formato ao controle Edit 3

        .Item(3).Text = "Formato: " & ActiveCell.NumberFormat

'       Adicionar a data da última vez que foi salvo

'       ao controle Edit 4

        .Item(4).Text = "Arquivo salvo em: " _

          & ThisWorkbook.BuiltinDocumentProperties("Last Save Time")

'       Adicionar o nome do autor ao controle Edit 5

        .Item(5).Text = "Arquivo criado por: " _

          & ThisWorkbook.BuiltinDocumentProperties("Author")

    End With

End Sub

O código para remoção do menu ficará por conta do leitor.

Ao clicar com o botão direito sobre uma área qualquer da planilha se a área estiver sendo utilizada (UsedRange) o menu será mostrado, caso contrário o popup padrão para células é mostrado.

« Anterior Δ Página principal ¤ Índice Próxima »
Quer receber novidades e e-books gratuitos?

MEGA FORMAÇÃO EM INFRAESTRUTURA DE TI

(Online, Vitalício, Prático e Atualizado)!

  • Chega de ser Ignorado pelo Mercado!

  • A vida não vai Melhorar Sozinha!

  • Quem domina infraestrutura, domina o Mercado.

  • Com esta Formação você vai Dominar o Conhecimento e torne-se o Profissional que as Empresas estão Buscando, "desesperadamente", mas não estão encontrando.

NÃO PROCURE VAGAS, SEJA PROCURADO!

 

Curso Completo de Excel - Curso Online com Certificado - 925 Vídeo Aulas - 22 Cursos - 120:42 horas

 

Para Todos os Detalhes, Acesse:

Curso Completo de Excel - Curso Online com Certificado - 925 Vídeo Aulas - 22 Cursos - 120:42 horas

 

https://juliobattisti.com.br/curso-infra-ti.asp

 

Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434

Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208

Todos os direitos reservados, Júlio Battisti 2001-2026 ®

LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO

DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI