ComboBox VBA – Como Criar Lista Suspensa pelo VBA (Caixa de Combinação ActiveX)
Você já conhece a ferramenta ComboBox VBA? Essa é a caixa de combinação no VBA que pode criar uma lista suspensa muito melhor do que no Excel!
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo!
O que você aprende neste vídeo
Resposta rápida: O ComboBox ActiveX é a lista suspensa controlada pelo VBA, diferente da caixa de combinação de formulário do Excel, ele aceita mudar fonte, tamanho e cor. As opções entram por código: Planilha.CaixaDeCombinacao.AddItem valor, normalmente dentro de um For que percorre as células, sempre precedido de um .Clear para não duplicar a lista.
Neste vídeo (23 min):
- 1:00 - A guia Desenvolvedor sai de Arquivo → Opções → Personalizar Faixa de Opções, marcando Desenvolvedor.
- 2:00 - Em Inserir há dois grupos: Controles de Formulário (do Excel) e Controles ActiveX (do VBA).
- 2:30 - A diferença prática: na versão do Excel a fonte não muda, aumentar a caixa deixa o botão gigante e o texto minúsculo.
- 3:30 - Regra do ActiveX: com o Modo de Design ligado você edita; desligado, ele funciona.
- 5:30 - Botão direito → Propriedades renomeia o controle, vale dar um nome legível, como CaixaDeCombinacao.
- 6:00 - No VBA, a referência é
NomeDaPlanilha.CaixaDeCombinacao.AddItem "texto". - 8:00 - Pegadinha: o VBA usa o nome de objeto da planilha (Planilha1), não o nome da aba, renomeie em Exibir → Propriedades.
- 9:00 - O
AddItemtem um segundo argumento, o índice, que começa em zero, sem ele, o item vai para o fim. - 10:30 - Há também
RemoveItem indicee.Clear, que esvazia a lista inteira. - 12:00 - Para carregar da planilha, um
For linha = 5 To 11 ... Nextpercorre as células. - 14:00 - Dentro do laço:
AddItem Cells(linha, 2).Value, a linha varia, a coluna fica fixa. - 17:00 - Sem o
.Clearantes do laço, cada clique no botão repete a lista inteira. - 19:00 - O botão é uma forma comum com Atribuir macro; segure
Altao desenhar para encaixar nas células. - 21:00 - Duplo clique no ComboBox (em Modo de Design) cria o evento
Change: ali você joga o valor escolhido numa célula.
Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:
Fala, Impressionadores! Hoje você vai ver como criar uma caixa de combinação no VBA (VBA ComboBox)!
Você também vai ver como visualizar as opções do ComboBox e as propriedades do ComboBox para que consiga fazer suas alterações.
Você também vai ver duas diferentes formas de como adicionar itens na caixa de combinação, formando uma lista propriamente dita.
Para finalizar vou te mostrar como atribuir macro em um botão e como mostrar a seleção do ComboBox em uma célula para que possa utilizar esse resultado em outras ações!
O ComboBox VBA é a caixa de combinação ActiveX inserida pela guia Desenvolvedor, no menu de Controles ActiveX. Diferente da lista suspensa comum do Excel, ela é personalizável e manipulável por código: você popula os itens com AddItem, limpa com Clear e devolve a seleção a uma célula pelo evento Change.
Habilitar guia Desenvolvedor no Excel
Para habilitar a guia desenvolvedor, você terá que clicar na guia Arquivo que fica no canto superior esquerdo do Excel.
Em seguida, clicar e em Opções, na parte inferior esquerda da janela que foi aberta.
Feito isso, uma nova janela será aberta. Nesta nova janela, você deve optar pela opção Personalizar Faixa de Opções. Veja:

Em seguida, na parte de Guias Principais, basta marcar a caixa Desenvolvedor e pressionar OK.
Pronto: depois de concluir esses passos poderemos ver que agora a guia Desenvolvedor já está habilitada, como mostrada abaixo:

Lista suspensa no VBA
Com a guia Desenvolvedor já habilitada, vamos seguir para inserir a nossa caixa de combinação no VBA.
Será necessário, na guia Desenvolvedor, inserir uma caixa de combinação ActiveX, especificamente falando no menu de controles ActiveX.

OBS: Há também o objeto caixa de combinação do Excel (no menu de Controles de Formulário, acima).
Vale ressaltar que há diferenças entre as caixas de combinação ActiveX e do Excel.
- Excel:
- Pode ter seu valor vinculado à uma célula
- Não pode ser personalizada
- Se tiver seu tamanho aumentado, o texto fica pequeno
- Não há como ser manipulada por códigos
- ActiveX:
- Não pode ter seu valor vinculado à uma célula diretamente, apenas por código
- Tem diversas formas de ser personalizada
- Pode ter o tamanho ajustado e o texto proporcionalmente, por código ou por propriedades
- Há diversas formas de manipulação por código
OBS2: Personalização – Propriedades do Combobox
Para acessar as propriedades do Combobox, você terá que estar com o modo de design ativo, e acessar as propriedades através do botão direito em cima do objeto. Acompanhe:

Dessa forma, uma nova janela se abrirá, com todas as opções do Combobox. Você pode ali modificar ou personalizar o que quiser, ou diretamente pelo VBA. Veja:

Como adicionar um item na caixa de combinação
Poderemos, por código, adicionar itens com o código exemplo abaixo:
<strong>Sub carregarOpcoes()</strong><br><br><strong>Sheets("ComboBox").CaixaDeCombinacao.AddItem "Teste"</strong><br><br><strong>End Sub</strong>Com esse código, conseguimos adicionar a opção “Teste” à caixa de combinação de nome CaixaDeCombinacao (como mostramos no vídeo), da planilha Combobox.
Aqui você pode adicionar diversas opções, caso queira fazer dessa forma, e utilizar várias linhas parecidas com essa.
Essa é uma forma de “popular” uma lista na caixa de combinação ActiveX, como mostramos também no vídeo.
Como adicionar uma lista na caixa de combinação
Há também uma outra forma, mais eficiente, de adicionar itens numa caixa de combinação ActiveX.
Dessa forma, nos baseamos em um intervalo de células para servir de “fonte” da nossa combobox. Veja:

O código abaixo, presente no arquivo disponibilizado em aula, vai fazer exatamente isso:
- Percorrer, através de uma estrutura de repetição For, da linha 5 até a linha 11, adicionando itens na nossa caixa de combinação (CaixaDeCombinacao), que estarão na coluna 2 (coluna B) e a cada linha.
Veja o código:
<strong>Sub carregarOpcoes2()<br></strong><br><strong>AbaComboBox.CaixaDeCombinacao.Clear</strong><br><br><strong>For linha = 5 To 11</strong><br><br><strong> AbaComboBox.CaixaDeCombinacao.AddItem Cells(linha, 2).Value</strong><br><br><strong>Next</strong><br><br><strong>End Sub</strong>Mostrar a seleção do combobox
Já que não temos como atribuir o valor do combobox ActiveX a uma célula diretamente, precisamos buscar uma alternativa via código.
Uma forma de simular essa “atribuição” a uma célula é utilizar um evento de mudança da CaixaDeCombinacao.
Esse evento vai ficar “dentro” do objeto da aba/planilha “Combobox”, marcado em azul abaixo:

Assim, a cada nova seleção do combobox em questão, será “puxado” um evento disparador de mudança da caixa de combinação como consequência, a posterior atualização do valor da célula apontada.
Veja o código abaixo:
<strong>Private Sub CaixaDeCombinacao_Change()</strong><br><br><strong>Range("B3").Value = AbaComboBox.CaixaDeCombinacao.Value</strong><strong> </strong><br><br><strong>End Sub</strong>Comentários a respeito do código:
- Armazenar na célula B3 o valor da CaixaDeCombinacao
Atribuir macro em um botão
Existe a possibilidade de o código ser atribuído a um botão. Dessa forma, ele vai ser o responsável por “ativar” o código, na prática, o disparando.
Para isso, temos que inserir na nossa planilha um retângulo de cantos arredondados.
Após personalizar o botão da forma que você queira, basta associar o código desejado ao botão, com o botão direito do mouse.

Dessa forma, caso os valores do intervalo listado para ter as opções do combobox mudem, com um simples clique do botão essas opções vão ser atualizadas pelo código mostrado um pouco mais acima.
Perguntas frequentes
1. Qual a diferença entre ComboBox ActiveX e do Excel?
A caixa de combinação do Excel, dos Controles de Formulário, pode ser vinculada direto a uma célula, mas não é personalizável e o texto não acompanha o redimensionamento. A ActiveX tem várias opções de personalização, ajusta tamanho e fonte e pode ser manipulada por código, mas o vínculo com a célula exige VBA.
2. Como preencher o ComboBox com um intervalo de células?
Use um laço For percorrendo as linhas da fonte e o método AddItem. No exemplo da aula: AbaComboBox.CaixaDeCombinacao.Clear, depois For linha = 5 To 11 com AddItem Cells(linha, 2).Value e Next. O Clear evita itens duplicados a cada execução, e a lista reflete o intervalo atualizado.
3. Como mostrar o item selecionado do ComboBox numa célula?
Como o ActiveX não aceita vínculo direto, use o evento de mudança do objeto. Dentro da planilha, crie Private Sub CaixaDeCombinacao_Change() e escreva Range(“B3”).Value = AbaComboBox.CaixaDeCombinacao.Value. A cada nova escolha na lista, o evento dispara e a célula é atualizada com o item selecionado.
4. Como habilitar a guia Desenvolvedor no Excel?
Vá em Arquivo > Opções > Personalizar Faixa de Opções, marque a caixa Desenvolvedor em Guias Principais e clique em OK. A guia aparece na faixa e dá acesso aos Controles ActiveX, ao Modo de Design e ao editor do VBA, tudo o que a caixa de combinação precisa.
Conclusão – ComboBox VBA
Hoje você aprendeu a criar e lidar com a Combobox VBA! Viu suas propriedades, como personalizá-la, ativá-la por códigos.
Além disso, viu como atrelar um botão ao código criado, e fazer com que a lista de itens da caixa de combinação seja atualizada de forma rápida!
Até o próximo post! Fique ligado no nosso canal do Youtube para mais conteúdo de VBA!
Hashtag Treinamentos
Para acessar outras publicações de VBA, clique aqui!

