Customizando Colunas de um ListBox no Access

Prezado Leitor(a)!

Imagine que você precise criar uma funcionalidade nos formulários que permita o usuário selecionar as colunas de um ListBox para melhor visualização??? Ou até mesmo, caso você tenha uma quantidade grande de campos, permitindo que o usuário sempre possa visualizar um tipo de layout definido por você quando ele abrir um formulário??? Neste tutorial, Customizando Colunas de um ListBox no Access, você vai aprender o passo a passo de como implementar em seus projetos.

Suponhamos que eu tenha a tabela abaixo, com os campos iD, Nome, Data_Nascimento, Telefone e E-mail.

accessfacil.com

Agora, eu quero apresentar esta tabela em um formulário, mais precisamente em um ListBox para que o usuário possa visualizar todos os dados da tabela, conforme imagem abaixo.

accessfacil.com

Repare que todas as colunas do ListBox estão flegadas para serem exibidas. Á medida que vc desmarca uma determinada coluna, ela deixa de aparecer do ListBox, conforme imagem abaixo.

accessfacil.com

E como podemos criar esta funcionalidade?

Primeiramente devemos parametrizar as colunas que deverão ser exibidas automaticamente quando o formulário for carregado. Para isso devemos entrar na Folha de Propriedade de cada CheckBox e deixar a Propriedade Valor Padrão como ‘Sim’ quando vc quiser que a coluna apareça e ‘Não’ quando você não quiser que a coluna apareça ao carregar o formulário.

accessfacil.com

Outro detalhe está nas propriedades da ListBox. Repare que a largura das colunas podem ser respeitadas no código. Portanto, anote o tamanho de cada coluna para elas possam ser colocadas no código VBA.

accessfacil.com

Agora vamos aos códigos. Primeiramente vamos criar um procedimento que vai ser aplicável para cada checkbox.


Private Sub AtualizarLista()

    Dim intTotColuna As Integer
    Dim strColuna As String
    Dim rs As String


    intTotColuna = 1
    
    'Defino a largura da coluna
    strColuna = "0"";"

    rs = "SELECT iD"
    
    If Me.chkNome = True Then
        intTotColuna = intTotColuna + 1
        strColuna = strColuna & "1.2"";"
        rs = rs & ", Nome"
    End If
    If Me.chkNascimento = True Then
        intTotColuna = intTotColuna + 1
        strColuna = strColuna & "1.5"";"
        rs = rs & ", Data_Nascimento"
    End If
    If Me.chkTelefone = True Then
        intTotColuna = intTotColuna + 1
        strColuna = strColuna & "1.2"";"
        rs = rs & ", Telefone"
    End If
    If Me.chkEmail = True Then
        intTotColuna = intTotColuna + 1
        strColuna = strColuna & "2.0"";"
        rs = rs & ", Email"
    End If

    
    rs = rs & " FROM tbl_Cliente"
    Me.ListaClientes.ColumnCount = intTotColuna
    Me.ListaClientes.ColumnWidths = strColuna
    Me.ListaClientes.RowSource = rs
    
End Sub

E o que este procedimento faz?

A medida que um checkbox for flegado ele formata a coluna que aquele checkbox se refere. Suponhamos que o chkNascimento (representa a coluna ‘Data_Nascimento’ do ListBox) seja flegado, ele vai ocupar a posição da coluna intcoluna = intcoluna + 1, neste caso a 2ª coluna, já que intcoluna vale 1 e a variável strColuna, vai receber o tamanho desta coluna. Repare que esta variável é do tipo String, já que ela recebe uma concatenação para suportar o formato dos campos da propriedade largura da coluna do ListBox e a variável ‘rs’ vai receber o parâmetro SQL para ser adicionada na propriedade fonte de controle do ListBox.

Vídeo Aula: Customizando Colunas de um ListBox no Access
accessfacil.com

Feito este procedimento, devemos chamá-la em cada evento ‘Após Atualizar’ de cada checkbox, conforme abaixo:

Private Sub chkEmail_AfterUpdate()
AtualizarLista
End Sub

Private Sub chkID_AfterUpdate()
AtualizarLista
End Sub

Private Sub chkNascimento_AfterUpdate()
AtualizarLista
End Sub

Private Sub chkNome_AfterUpdate()
AtualizarLista
End Sub

Private Sub chkTelefone_AfterUpdate()
AtualizarLista
End Sub

Para concluir, não podemos esquecer de chamar esta função no evento ‘Ao Carregar’ do formulário. Assim será(ão) exibido(s) apenas a(s) coluna(s) que você definiu como ‘Sim’ na propriedade Valor Padrão de cada checkbox.

Private Sub Form_Load()
AtualizarLista
End Sub

Gostou do Tutorial?

Deixe seu comentário aqui embaixo. Queremos lhe ouvir!

Baixe o template ColunasListBox.zip, para que você possa estudar!!!!

2 comentários


  1. COMO MARCAR E DESMARCAR TODOS OS CHECKBOX EM UM FORMULARIO

    Responder

    1. Luis.
      Basta colocar um botão, que no evento ao clicar deste botão faça checkbox1,Value = True, checkbox2.Value = True….
      e para desmarcar é colocar todos como False.

      Responder

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *