Como Preencher um Combobox no Excel

Quer saber como preencher um Combobox no Excel? Então você está no lugar certo!

O ComboBox (Caixa de Combinação) é um controle para formulários no VBA que permite ao usuário escolher em uma lista de opções. Ele também é conhecido como lista suspensa, mas para servir ao seu propósito de lista suspensa, primeiro você precisará preencher a caixa de combinação para o usuário para que ele possa realmente fazer uma escolha.

Existem diferentes maneiras de preencher uma ComboBox com VBA e neste post você vai conferir as principais opções.

Navegue pelo tópico de seu interesse:

Opção 1: Alterando a propriedade RowSource

Este é provavelmente o método mais fácil de se preencher Combobox no Excel, pois não é necessário o uso de códigos para se obter o resultado desejado.

1. Em uma planilha, liste todos os dados que você pretende popular a sua Combobox. Veja o exemplo abaixo:

Alterando a propriedade RowSource

2. Em seguida, selecione sua Combobox e altere a propriedade RowSource inserindo o intervalo de dados da sua planilha. Veja o exemplo.

RowSource

Como resultado, você terá os dados sendo carregados em sua Combobox conforme exemplo abaixo:

como popular um combobox

Opção 2: Alterando a propriedade RowSource via Código

Outra alternativa para popular uma Combobox no Excel VBA, é alterando a propriedade RowSource via código. Você poderá utilizar essa opção caso não queira alterar essa opção na janela de propriedades conforme mostrado no método anterior.

Para isto, siga as etapas abaixo:

1. Dê duplo clique em seu formulário e acesse o evento Initialize dele.

2. Dentro do evento Initialize do formulário, insira o seguinte código:

Me.ComboBox1.RowSource = "Mês!A1:A12"

Alterando a propriedade RowSource via Código

Importante: Altere o nome do seu Combobox e intervalo conforme os dados da sua planilha.

Como resultado, você terá os dados sendo carregados em sua Combobox conforme exemplo abaixo:




Opção 3: Usando o método .AddItem

Se você deseja preencher sua Combobox com poucas informações ou se não pretende utilizar uma planilha para preencher os dados da Combobox, então este terceiro método pode ser o mais indicado. Neste caso, siga as etapas abaixo:

1. Dê duplo clique em seu formulário e acesse o evento Initialize.

2. Dentro do evento Initialize do formulário, insira o seguinte código:

With ComboBox1
.AddItem "Janeiro"
.AddItem "Fevereiro"
.AddItem "Março"
.AddItem "Abril"
.AddItem "Maio"
.AddItem "Junho"
.AddItem "Julho"
.AddItem "Agosto"
.AddItem "Setembro"
.AddItem "Outubro"
.AddItem "Novembro"
.AddItem "Dezembro"
End With

.AddItem em Combobox

Opção 4: Preencher Combobox dinâmica

Como você pode observar nos métodos anteriores, se você precisar atualizar sua Combobox (adicionando ou removendo dados), terá que refazer todos os passos mostrados em cada método.

No entanto, existe uma maneira de preencher uma Combobox de modo que ela fique dinâmica, ou seja, se atualiza conforme os dados da base que alimenta ela. Esse tipo de preenchimento de Combobox é ideal para produtos, produtos e clientes, por exemplo, onde a quantidade de dados pode variar. Para isto, siga as etapas abaixo:

1. Dê duplo clique em seu formulário e acesse o evento Initialize.

2. Dentro do evento Initialize do formulário, insira o seguinte código:

ComboBox1.Clear

lin = 1

Do Until Sheets("Mês").Cells(lin, 1) = ""
Me.ComboBox1.AddItem Sheets("Mês").Cells(lin, 1)
lin = lin + 1
Loop

Preencher Combobox dinâmica

Ao usar o código acima, sua Combobox será preenchida de maneira dinâmica. Deste modo, se você adicionar ou remover linhas em sua base de dados, a Combobox irá acompanhar a atualização dos dados.

Opção 5: Preencher Combobox sem duplicar dados

No método de preenchimento de Combobox mostrado anteriormente, é possível popular uma Combobox de maneira dinâmica de modo que os dados sejam atualizados automaticamente conforme são realizadas alterações na base de dados.

No entanto, se você precisa preencher uma Combobox sem duplicar dados, então este próximo método é o mais indicado. Para isto, siga as etapas abaixo:


1. Dê duplo clique em seu formulário e acesse o evento Initialize.

2. Dentro do evento Initialize do formulário, insira o seguinte código:

Planilha1.Range("A1").Select

ComboBox1.Clear

Do
Pesquisa = Range("A1").Address & ":" & ActiveCell.Address
Contar = WorksheetFunction.CountIf(Planilha1.Range(Pesquisa), ActiveCell.Text)
If Contar <= 1 Then
ComboBox1.AddItem ActiveCell.Text
End If

ActiveCell.Offset(1, 0).Select
If ActiveCell.Value = "" Then
Exit Sub
End If
Loop

Como resultado, observe que você terá uma Combobox exibindo apenas valores únicos.

Opção 6: Preencher Combobox dependente

Outra maneira de preencher uma Combobox no Excel é definir os dados de acordo com a seleção de outra Combobox, o que também é conhecido como Combobox dependente.

Para este exemplo, temos duas Combobox na qual chamaremos de ComboRegiao e ComboEstado. Deste modo, dependendo da região selecionada na ComboRegiao, teremos determinados estados disponíveis para seleção na ComboEstado. Veja o exemplo abaixo:

Preencher Combobox dependente

Para isto, siga as etapas abaixo:

1. Preencha a ComboRegiao utilizando o método desejado. Para este exemplo, usaremos o método .AddItem conforme mostrado na Opção 3.

With ComboRegiao
.AddItem "Sul"
.AddItem "Norte"
.AddItem "Sudeste"
End With





2. Em seguida, dê um duplo clique no ComboRegiao e dentro do evento Change, insira o seguinte código:

If ComboRegiao = "Sul" Then
ComboEstado.Clear
With ComboEstado
.AddItem "Porto Alegre"
.AddItem "Curitiba"
.AddItem "Florianópolis"
End With

ElseIf ComboRegiao = "Norte" Then
ComboEstado.Clear
With ComboEstado
.AddItem "Amapá"
.AddItem "Amazonas"
.AddItem "Rondônia "
End With

ElseIf ComboRegiao = "Sudeste" Then
ComboEstado.Clear
With ComboEstado
.AddItem "São Paulo"
.AddItem "Rio de Janeiro"
.AddItem "Minas Gerais"
End With

End If

Opção 7: Preencher Combobox com 2 colunas

Se você precisar preencher uma Combobox no Excel com duas colunas, então siga este método.

1. Para este exemplo, temos uma tabela com duas colunas Código e Produto.

2. Selecione a sua Combobox e altere a Propriedade ColumnCount para 2.

2. Dê duplo clique em seu formulário e acesse o evento Initialize.

3. Dentro do evento Initialize do formulário, insira o seguinte código:

Dim linha As Integer
linha = 1

Do Until Planilha1.Range("A" & linha).Value = ""

ComboBox1.AddItem Planilha1.Range("A" & linha).Value
ComboBox1.List(linha - 1, 1) = Planilha1.Range("B" & linha).Value

linha = linha + 1
Loop

Combobox com 2 colunas

Como resultado, seu Combobox exibirá 2 colunas.

Preencher Combobox com 2 colunas

Dica extra: Caso queira ajustar a largura das colunas da sua Combobox, então basta inserir as larguras de cada coluna na propriedade ColumnWidths separando-as por ponto e vírgula. (Exemplo: 90; 120)

Importante:

  • Como você pode observar, existem várias maneiras de adicionar uma lista a uma ComboBox. Escolha o método que funciona melhor para você. Contudo, recomenda-se não misturar os métodos para evitar erros de compilação.
  • Em todos os métodos mostrados, você precisará alterar o nome da sua Combobox e dos intervalos utilizados para preenchê-la para que se adaptem a sua planilha.

Confira também a seguintes dicas Excel:

E então, o que achou das opções para preencher uma Combobox no Excel VBA? Caso tenha ficado com alguma dúvida, basta deixar o seu comentário abaixo.