VBA Caixa de Combinação

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on July 5, 2023

Este tutorial demonstrará como trabalhar com ComboBoxes (Caixas de Combinação) no VBA.

ComboBoxes permitem que os usuários selecionem uma opção em uma lista de menu suspenso. Os ComboBoxes podem ser criados em UserForms do VBA ou com uma planilha do Excel. Neste tutorial, você aprenderá a criar e manipular ComboBoxes no VBA e em planilhas do Excel.

Se você quiser aprender a criar uma caixa de listagem, clique aqui: Caixa de listagem VBA

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

Criar uma Caixa de Combinação na Planilha do Excel

Para inserir uma Caixa de Combinação na planilha, você precisa ir para a guia Guia Desenvolvedor clique em Inserir e, em Controles ActiveX, escolha Caixa de Combinação:

inserir combobox planilha

Imagem 1. Inserir uma Caixa de Combinação na planilha

Quando você seleciona a Caixa de Combinação que inseriu, pode clicar em Propriedades na guia Desenvolvedor:

renomear cmbcombobox

Imagem 2. Alterar propriedades da Caixa de Combinação

Aqui você pode definir diferentes propriedades do ComboBox. Para começar, alteramos o atributo Name para cmbComboBox. Agora, podemos usar o ComboBox com esse nome no código VBA.

Preencher uma ComboBox no código VBA

Primeiro, precisamos preencher o ComboBox com valores. Na maioria dos casos, um ComboBox precisa ser preenchido quando a pasta de trabalho é aberta. Por isso, precisamos colocar um código para preencher o ComboBox 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.cmbComboBox

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

End With

Quando você clicar no menu suspenso, terá 5 nomes para escolher (John, Michael, Jennifer, Lilly e Robert):

vba combobox populate

Imagem 3. Preencher a ComboBox em VBA

Preencher um ComboBox a Partir de um Intervalo de Células

Outra maneira possível de preencher um ComboBox é permitir que o usuário o faça. Um ComboBox pode ser vinculado ao intervalo de células. Nessa abordagem, toda vez que o usuário inserir um novo valor no intervalo de células, o ComboBox será atualizado com esse valor.

Se quiser habilitar isso, você deve acessar as Propriedades do ComboBox e definir o atributo ListFillRange como o intervalo de células (no nosso caso, E2:E5):

combobox fonte intervalo

Imagem 4. Preencher o ComboBox a partir do intervalo de células

Vinculamos nosso ComboBox ao intervalo E2:E5, onde colocamos os nomes que desejamos (Robert, Julia, George, Matthew). Como resultado, o ComboBox agora é preenchido com esses nomes:

vba populated combobox

Imagem 5. ComboBox preenchido a partir do intervalo de células

Obter um Item Selecionado de um ComboBox em VBA

A finalidade de um ComboBox é obter uma escolha do usuário. Para recuperar uma opção do usuário, é necessário usar este código:

Dim strItemSelecionado As Variant

strItemSelecionado = Planilha1.cmbComboBox.Value

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

obter selecao combobox

Imagem 6. Obter um valor selecionado do ComboBox em VBA

Selecionamos Julia no ComboBox e executamos o procedimento. Como você pode ver na Figura 5, o valor de strSelectedItem é Julia, que é o valor que selecionamos. Agora você pode processar essa variável posteriormente no código.

Limpar uma ComboBox

Se quiser limpar uma ComboBox no VBA, você precisará usar o método Clear do objeto Planilha1.cmbComboBox. Ele excluirá todos os itens da ComboBox. Aqui está o código:

Planilha1.cmbComboBox.Clear

Observe que o método Clear não exclui o atributo ListFillRange, portanto, ele deve ser removido das propriedades do ComboBox antes.

Quando executamos o código, obtemos o ComboBox vazio:

vba clear combobox

Imagem 7. Limpar o ComboBox

Usar um ComboBox em um Formulário de Usuário

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

inserir formulario usuario

Imagem 8. Inserir um formulário de usuário

Para exibir os controles de 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 Caixa de Combinação para criá-la no Userform.

formulario com combobox

Imagem 9. Inserir um ComboBox no formulário de usuário

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

Private Sub UserForm_Initialize()

    With UserForm1.cmbComboBox

        .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 Combobox com esses 5 nomes:

vba combobox in userform

Imagem 10. A ComboBox com valores no formulário de usuário

Se você quiser obter o valor selecionado do ComboBox, precisará usar a mesma lógica para o Combobox em uma planilha, que foi explicada anteriormente no 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