Como Preencher um ComboBox com VBA

melhores maneiras de preencher um combobox

Vamos aprender através desse artigo um passo a passo completo de como preencher um ComboBox no Excel (Caixa de Combinação) com VBA.

Embora, semelhante com a Validação de Dados suspensa, através da ComboBox podemos automatizar essas informações.

PUBLICIDADE

Em resumo, vamos destacar as formas mais utilizadas.

Como preencher um ComboBox com .RowSource

A maneira mais fácil que encontramos para isso é através da propriedade .RowSource, conforme abaixo:

  1. Crie um novo formulário através do seu Visual Basic.
  2. Através desse formulário insira uma ComboBox.
  3. Clique sobre seu ComboBox e acesse o seu módulo.
  4. Insira o código VBA abaixo.
Private Sub UserForm_Initialize()

ComboBox1.RowSource = "Plan1!A1:A10"

End Sub

Em resumo, com o código acima, vamos trazer todos os dados da Plan1 com seleção de A1:A10 dentro de nossa Caixa de Combinação.

Através do UserForm_Initialize toda vez que acessarmos o formulário nossa ComboBox será atualizada.

Utilizando: Loop Do Until

Em segundo lugar, para substituir código anterior, podemos utilizar laço de repetição.

Private Sub UserForm_Initialize()

linha = 2

Do Until Sheets("Plan1").Cells(linha, 1) = ""

ComboBox1.AddItem Sheets("Plan1").Cells(linha, 1)

linha = linha + 1

Loop

End Sub

No entanto, considero esse código de loop mais completo para inserir em nossa ComboBox visto que ele confere as linhas em branco.

PUBLICIDADE

Em resumo, através da ferramenta Do Until ele vai percorrer todas as linhas enquanto a condição estiver verdadeira.

For Each (Sem duplicidade)

Por último, temos a alternativa mais completa em termos de benefício, pois além de preencher a ComboBox, remove as duplicadas.

Private Sub UserForm_Initialize()

Dim ul As Integer, colect As New Collection

Dim Value As Variant, a As Variant

On Error Resume Next
'localiza a última linha da coluna 1
ul = Cells(Rows.Count, 1).End(xlUp).Row

a = Sheets("Plan1").Range("B2:B" & ul).Value

For Each Value In temp

If Len(Value) > 0 Then colect.Add Value, CStr(Value)

Next Value

For Each Value In area

'Insere itens no ComboBox
ComboBox1.AddItem Value

Next Value

Set colect = Nothing

End Sub

Portanto, concluímos aqui nossas 3 melhores formas de preencher um ComboBox no Excel.

Se você tem, ou conhece alguma outra maneira de preencher o ComboBox deixe aqui nos comentários.

Compartilhe
Rafael Schreiner

Rafael Schreiner

Artigos: 348