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 Access › Lições : 10
Quer receber novidades e e-books gratuitos?
« Anterior Δ Página principal ¤ Índice Próxima »
Criando menus, barras de comando e botões personalizados no Access usando VBA
Autor: Robert Friedrick Martim
Lição 009 - Menus "Combobox"

Os menus tipo combobox (também chamados de dropdown) são os menus que contém uma lista que quando clicada disponibiliza os itens da lista para o usuário. A figura abaixo mostra o exemplo clássico do Access:


Figura 9-1

Existem várias coisas que podem ser feitas com os menus combobox. Contudo, precisaremos criar também uma classe que ficará de prontido para os eventos Change de nossa combobox.

O exemplo que estarei dando consiste em uma combobox que abre uma tabela ou formulário em modo de design. Tanto a tabela quanto o formulário estão ocultos.

Os itens que compõem a lista do menu serão carregadados de uma tabela, também oculta.


Figura 9-2

A figura acima mostra as tabelas ocultas que utilizaremos. Para visualizar as tabelas deste exemplo vá até Ferramentas à Opções e selecione a opção Objetos ocultos.

Crie uma nova tabela contendo três campos e adicione alguns dados como mostra a figura:


Figura 9-3

O tipo é dado por uma combobox no modo de design e contém dois itens: Tabela e Form. Isso ajuda na entrada de dados consistente.

O nosso menu conterá apenas estes dois itens para o momento. Outros itens podem ser adicionados à tabela acima os quais serão carregados pelo código que criaremos.

O menu será adicionado à barra de comando Database, conforme a figura:


Figura 9-4

Para completar este exercício, você precisará:

  • Duas tabelas
  • Um formulário
  • Um Módulo
  • Uma Classe

A primeira tabela consiste da tabela onde adicionaremos os itens. Inicie por esta tabela. Entre em modo de design e crie os seguintes campos:


Figura 9-5

Salve esta tabela como itensCboBox.

A segunda tabela não precisa ter nada de especial, pois a utilizaremos apenas para acesso do menu. Porém, o nome da tabela deve ser o mesmo que o nome inserido no campo descrItem como mostrado na figura 9.3 acima.

Com as duas tabelas prontas, adicione um formulário e chame-o de Form 1. Acrescente este nome à tabela itensCboBox no campo descrItem.

Feito isso, acrescente o módulo e a classe ao seu projeto. O nome do módulo não é importante, mas o nome da classe é. Nomeie a classe como clsEventos. Estaremos fazendo referência a este nome no código que escreveremos no módulo.

'Define o evento que estamos buscando. Neste caso, queremos o

'evento para o Command CommandBarComboBox. O nome do evento,

'você pode escolher. Neste exemplo, estarei chamando de

'"eventosCboBox"

Private WithEvents eventosCboBox As Office.CommandBarComboBox

 

'Instancia o evento eventosCboBox no controle "box"

'do Office.CommandBarComboBox

Public Sub iniciarCtrl(box As Office.CommandBarComboBox)

    Set eventosCboBox = box

End Sub

 

Private Sub eventosCboBox_Change(ByVal Ctrl As Office.CommandBarComboBox)

'   Dimensiona a conexão e o recordset

    Dim cn      As ADODB.Connection

    Dim rs      As ADODB.Recordset

 

'   Instancia os objetos cn e rs

    Set cn = CurrentProject.Connection

    Set rs = CreateObject("ADODB.Recordset")

   

'   Definição da string SQL

    SQL = "SELECT * FROM itensCboBox WHERE descrItem ='" & Ctrl.Text & "'"

 

'   Abre o recordset

    rs.Open SQL, cn, 1

 

'   Pega o "tipo"

    tipo = rs![tipo]

 

'   Seleciona o caso do tipo

    Select Case tipo

'       Se o caso for "Tabela"

        Case "Tabela"

'           Perguntar ao usuário de deseja continuar

            resposta = MsgBox("A tabela selecionada será aberta para " _

             & "edição! Deseja continuar?", vbInformation + vbYesNo)

'           Se resposta negativa, terminar a execução

            If Not resposta = vbYes Then Exit Sub

'           Se a resposta for positiva, abrir a tabela em modo de design

            DoCmd.OpenTable Ctrl.Text, acViewDesign

 

'       Se o caso for "Form"

        Case "Form"

'           Perguntar ao usuário de deseja continuar

            resposta = MsgBox("O formulário selecionado será aberto " _

              & "para edição! Deseja continuar?", vbInformation + vbYesNo)

'           Se a resposta for negativa, terminar a execução

            If Not resposta = vbYes Then Exit Sub

'           Se resposta positiva, abrir o formulário em modo de design

            DoCmd.OpenForm Ctrl.Text, acViewDesign

'       Um outro caso qualquer não definido

        Case Else

            MsgBox "Caso desconhecido", vbInformation + vbOKOnly

    End Select

End Sub

O código acima resolve o problema do evento Change que ocorre na caixa de combinação toda vez que um item novo é selecionado.

Além de capturar o evento, há ainda o código do que deve ser feito. Quando usuário escolher uma opção uma mensagem aparece:


Figura 9-6

Dependendo da resposta do usuário o objeto é aberto em modo de design ou não.

Com a classe pronta, abre o módulo que você criou onde iremos inserir o seguinte código:

'Instancia as duas contantes referentes ao nome

'da barra que conterá o menu e o menu

Public Const NOMEMENU       As String = "Menu Combobox"

Public Const BARRAACCESS    As String = "Database"

 

Dim selecaoCboBox As New clsEventos

 

Sub mnuCboBox()

'   Dimensiona os objetos de menu

    Dim cmdbar      As CommandBar

    Dim cboBox      As CommandBarControl

 

'   Dimensiona a conexão e o recordset

    Dim cn          As ADODB.Connection

    Dim rs          As ADODB.Recordset

         

'   Em caso de erro continuar execucao

    On Error Resume Next

 

'   Encontrar o controle...

    Set cboBox = CommandBars(BARRAACCESS).FindControl(Tag:=NOMEMENU)

'       ... e excluí-lo

        cboBox.Delete

      

'   Instancia os objetos cn e rs

    Set cn = CurrentProject.Connection

    Set rs = CreateObject("ADODB.Recordset")

   

'   Define a string SQL

    SQL = "SELECT * FROM itensCboBox"

   

'   Abre o recordset

    rs.Open SQL, cn, 1

       

'   Se nao for início dos registros, mover para o primeiro registro

    If Not rs.BOF Then rs.MoveFirst

   

'   Se for o final do arquivo, avisar o usuário

    If rs.EOF Then

        MsgBox "Não há itens para inserir na combobox! " _

          & "A rotina será terminada!", vbInformation + vbOKOnly

        Exit Sub

    End If

   

'   Instancia o cmdbar como sendo a BARRAACCESS

    Set cmdbar = CommandBars(BARRAACCESS)

 

'   Instancia o cboBox na BARRAACCESS

    Set cboBox = cmdbar.Controls.Add(Type:=msoControlComboBox)

'       Define o tag utilizado para exclusao do controle

        cboBox.Tag = NOMEMENU

   

'   Enquanto (While) nao for (Not) fim do arquivo (End of File - EOF)

    While (Not (rs.EOF))

'       Adicionar o item do campo descrItem

        cboBox.AddItem rs![descrItem]

        rs.MoveNext

    Wend

   

'   Primeiro item selecionado na caixa

    cboBox.ListIndex = 1

 

'   Iniciar a classe cointendo o controle do evento change

    selecaoCboBox.iniciarCtrl cboBox

   

    rs.Close

    cn.Close

   

    Set rs = Nothing

    Set cn = Nothing

   

End Sub

Utilize o método aprensetado de formulário inicial para rodar o código assim que o Access for iniciado.

« Anterior Δ Página principal ¤ Índice Próxima »

você conhece a universidade do access?

Universidade do Access - Curso Completo de Access
com tudo para você dominar o Access - do Básico ao
Avançado - até a Criação de Sistemas Profissionais
Completos - Passo a Passo - Tela a Tela

Capa da Universidade do Access

Aplica-se ao Access 2019, 2016, 2013 e 2010!

13 Cursos - 574 Vídeo-Aulas - 63:32 horas

Para todos os detalhes, acesse:

https://juliobattisti.com.br/universidade-do-access.asp

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