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 AddItem tem um segundo argumento, o índice, que começa em zero, sem ele, o item vai para o fim.
  • 10:30 - Há também RemoveItem indice e .Clear, que esvazia a lista inteira.
  • 12:00 - Para carregar da planilha, um For linha = 5 To 11 ... Next percorre 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 .Clear antes do laço, cada clique no botão repete a lista inteira.
  • 19:00 - O botão é uma forma comum com Atribuir macro; segure Alt ao 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:

ComboBox VBA

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:

ComboBox VBA

Lista suspensa no VBA

Com a guia Desenvolvedor já habilitada, vamos seguir para inserir a nossa caixa de combinação no VBA.

Ícone VBAVBA Impressionador

Como automatizar praticamente qualquer tarefa repetitiva que você faça dentro do Excel. Aprenda a criar integrações do Excel com o PowerPoint, Word, Outlook e muito mais. Aprenda a criar automações para resolver tudo com apenas um clique em um botão. Tudo isso com uma única linguagem que junta todos esses programas.

Começar agoraSeta para a direita
Fundo VBATelas VBA

Será necessário, na guia Desenvolvedor, inserir uma caixa de combinação ActiveX, especificamente falando no menu de controles ActiveX.

ComboBox VBA

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:

ComboBox VBA

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:

ComboBox VBA

Como adicionar um item na caixa de combinação

Poderemos, por código, adicionar itens com o código exemplo abaixo:

VBA
<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:

ComboBox VBA

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:

VBA
<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:

ComboBox VBA

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:

VBA
<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.

ComboBox VBA

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!


Quer aprender mais sobre VBA com um minicurso básico gratuito?