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
- Opção 2: Alterando a propriedade RowSource via Código
- Opção 3: Usando o método .AddItem
- Opção 4: Combobox dinâmica
- Opção 5: Combobox sem duplicar dados
- Opção 6: Combobox dependente
- Opção 7: Combobox com 2 colunas
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:
2. Em seguida, selecione sua Combobox e altere a propriedade RowSource inserindo o intervalo de dados da sua planilha. Veja o exemplo.
Como resultado, você terá os dados sendo carregados em sua Combobox conforme exemplo abaixo:
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"
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
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
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:
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
Como resultado, seu Combobox exibirá 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:
- Inputbox no Excel VBA – Um Guia Completo
- Erros no VBA Excel – Tudo que você precisa saber!
- Aprenda Como Criar Funções Próprias no Excel
- Seleção múltipla em lista suspensa no Excel
- MsgBox no Excel: Um Guia Completo
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.