Blog

Postado em em 7 de janeiro de 2023

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!

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!

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:

0 1

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:

1 1

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.

2 1

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:

3 1

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:

4 1

Como adicionar um item na caixa de combinação

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

Sub carregarOpcoes()

Sheets("ComboBox").CaixaDeCombinacao.AddItem "Teste"

End Sub

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:

Sub carregarOpcoes2()

AbaComboBox.CaixaDeCombinacao.Clear

For linha = 5 To 11

    AbaComboBox.CaixaDeCombinacao.AddItem Cells(linha, 2).Value

Next

End Sub

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:

Private Sub CaixaDeCombinacao_Change()

Range("B3").Value = AbaComboBox.CaixaDeCombinacao.Value 

End Sub

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.

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?

Quer sair do zero no Power BI e virar uma referência na sua empresa? Inscreva-se agora mesmo no Power BI Impressionador