VBA Caixa de Listagem

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on May 6, 2023

Este tutorial demonstrará como trabalhar com caixas de listagem usando o VBA.

No VBA, você pode criar uma Caixa de Listagem em que o usuário pode escolher uma das opções listadas. As caixas de listagem são frequentemente usadas em UserForms, mas também podem ser usadas em uma planilha. Neste tutorial, você aprenderá a criar, preencher e excluir uma caixa de listagem. Também verá como obter uma opção do usuário no VBA e usá-la no código.

Se você quiser aprender a criar um ComboBox, clique aqui: ComboBox VBA

Se quiser aprender a criar uma Caixa de Seleção, clique aqui: Caixa de seleção VBA

Criar uma Caixa de Listagem

Para inserir uma caixa de listagem na planilha, você precisa ir para a guia Guia Desenvolvedor clique em Inserir e, em Controles ActiveX, escolha Caixa de Listagem:

menu caixa listagem

Imagem 1. Inserir uma caixa de listagem na planilha

Quando você seleciona a caixa de listagem que inseriu, pode clicar em Propriedades na guia Desenvolvedor:

propriedades cxlistagem renomeado

Imagem 2. Alterar propriedades da caixa de listagem

Aqui você pode definir diferentes propriedades da Listbox. Para começar, alteramos o atributo Name para lstListBox. Agora, podemos usar a caixa de listagem com esse nome no código VBA.

Preencher uma Caixa de Listagem no Código VBA

Primeiro, precisamos preencher a caixa de listagem com valores. Na maioria dos casos, uma caixa de listagem precisa ser preenchida quando a pasta de trabalho é aberta. Por esse motivo, precisamos colocar um código para preencher a caixa de listagem no objeto Workbook, procedimento Open. Esse procedimento é executado sempre que um usuário abre a pasta de trabalho. Aqui está o código:

With Planilha1.lstListBox
    .AddItem "John"
    .AddItem "Michael"
    .AddItem "Jennifer"
    .AddItem "Lilly"
    .AddItem "Robert"
End With

Como você pode ver na Imagem 3, preenchemos nossa caixa de listagem com 5 nomes (John, Michael, Jennifer, Lilly e Robert):

Populate Listbox in Vba

Imagem 3. Preencher a caixa de listagem no VBA

Preencher uma Caixa de Listagem a Partir de um Intervalo de Células

Outra maneira possível de preencher uma caixa de listagem é permitir que um usuário o faça. Uma caixa de listagem pode ser vinculada a um intervalo de células. Portanto, toda vez que o usuário inserir um novo valor no intervalo de células, a caixa de listagem será atualizada com esse valor.

Se quiser ativar isso, você deve acessar as Propriedades da ListBox e definir o atributo ListFillRange:

 

list fill rangeImage 4. Preencher a ListBox a partir do intervalo de células

Vinculamos nossa caixa de listagem ao intervalo E2:E5, onde colocamos os nomes que desejamos (Nathan, Harry, George, Roberta). Como resultado, a caixa de listagem agora é preenchida com esses nomes.

Obter um Item Selecionado de uma Caixa de Listagem no VBA

O objetivo de uma caixa de listagem é obter uma escolha do usuário. Para recuperar um valor selecionado por um usuário, é necessário usar este código:

Dim strSelectedItem As Variant

strSelectedItem = Planilha1.lstListBox.Value

A seleção do usuário está no atributo Value do objeto Sheet1.lstListbox. Esse valor é atribuído à variável strSelectedItem:

obter item selecionadoImagem 5. Obter um valor selecionado da Listbox em VBA

Selecionamos George na caixa de listagem e executamos o procedimento. Como você pode ver na Imagem 5, o valor de strSelectedItem é George, que é o valor que selecionamos. Além disso, você pode processar essa variável no código.

Limpar uma Caixa de Listagem

Para limpar uma caixa de listagem no VBA, você precisa usar o método Clear do objeto Planilha1.lstListBox. Ele excluirá todos os itens da caixa de listagem. Aqui está o código:

Planilha1.lstListBox.Clear

(Observação: se o atributo ListFillRange estiver definido, o código acima produzirá um erro.
Você precisa limpar o atributo ListFillRange primeiro)

Quando executamos o código, obtemos uma caixa de listagem vazia:

Vba Clear Listbox

Imagem 6. Limpar a caixa de listagem

Usar uma caixa de listagem em um UserForm

Como mencionamos, a Listbox é usada com mais frequência em UserForms. Para explicar como fazer isso, primeiro vamos inserir um formulário de usuário. No VBA Editor, clique com o botão direito do mouse no nome do módulo, clique em Inserir e escolha UserForm:

menu inserir userformImagem 7. Inserir um Userform

Para exibir os controles para inserção, é necessário ativar a Caixa de Ferramentas. Para fazer isso, clique no ícone Caixa de Ferramentas na barra de ferramentas. Depois disso, você verá as janelas com todos os controles disponíveis. Você pode clicar em ListBox para criá-lo no Userform.

inserir listbox userform nomelimpo

Image 8. Inserção de uma Listbox no Userform

Chamaremos a ListBox de lstListBox. Para preenchê-la com valores, precisamos colocar o seguinte código no método Initialize do objeto UserForm:

Private Sub UserForm_Initialize()
    
    With UserForm1.lstListBox

        .AddItem "John"
        .AddItem "Michael"
        .AddItem "Jennifer"
        .AddItem "Lilly"
        .AddItem "Robert"

    End With

End Sub

Esse código é acionado sempre que um usuário executa o Userform e preenche a ListBox com esses 5 nomes:

Vba Listbox in Userform

Imagem 9. A caixa de listagem com valores no formulário de usuário

Se quiser obter o valor selecionado da ListBox, será necessário usar a mesma lógica da Listbox em uma planilha, explicada anteriormente neste artigo.

vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA