VBA – Criando ComboBox Encadeados
Outra dúvida muito comum na comunidade VBA. ComboBox Encadeados quer dizer que em dois ou mais ComboBoxes, ao atualizar os dados de um ComboBox, os outros são afetados. Isso é útil quando os dados entre eles estão relacionados, o que quase sempre é verdade.
No exemplo deste post, a relação dos dados será baseada na tradicional Produto e Categoria. A pasta de trabalho deve estar disposta em duas planilhas da seguinte forma:
É preciso que os dados da coluna NomeDaCategoria na planilha de Produtos estejam compatíveis com os da planlha Categorias, ou o filtro não funcionará.
Após isso, crie um UserForm com a seguinte “cara”:
Para que o código funcione sem precisar alterar nada, nomeie os campos da seguinte forma:
LabelCategorias
ComboBoxCategorias
LabelProdutos
ComboBoxProdutos
Em seguida, adicione o seguinte código o formulário:
Private Sub ComboBoxCategorias_Change() Call CarregaProdutos(Me.ComboBoxCategorias.List(Me.ComboBoxCategorias.ListIndex)) End Sub Private Sub UserForm_Initialize() Call CarregaCategorias End Sub Private Sub CarregaCategorias() Dim linha As Integer, coluna As Integer linha = 2 coluna = 1 Me.ComboBoxCategorias.Clear With Sheets("Categorias") Do While Not IsEmpty(.Cells(linha, coluna)) Me.ComboBoxCategorias.AddItem .Cells(linha, coluna).Value linha = linha + 1 Loop End With End Sub Private Sub CarregaProdutos(ByVal Categoria As String) Dim linha As Integer, colunaProduto As Integer, colunaCategoria As Integer linha = 2 colunaProduto = 1 colunaCategoria = 2 Me.ComboBoxProdutos.Clear With Sheets("Produtos") Do While Not IsEmpty(.Cells(linha, colunaProduto)) If .Cells(linha, colunaCategoria).Value = Categoria Then Me.ComboBoxProdutos.AddItem .Cells(linha, colunaProduto).Value End If linha = linha + 1 Loop End With End Sub
Execute o formulário e selecione uma categoria no primeiro ComboBox. Veja que no ComboBox de produtos são mostrados apenas aqueles que pertecem à categoria selecionada:
Obviamente existem várias formas de fazer o mesmo trabalho. Invente a sua, ou, faça o download do exemplo no link abaixo:
http://www.tomasvasquez.com.br/downloads/ComboBoxEncadeado.zip
Bom proveito!



45 Convidados
3 Bots
fevereiro 26th, 2010 at 12:31
Valeu! Muito bom o exemplo. Funcional e prático.
junho 26th, 2010 at 23:34
Como faço uma Planilha (Menu) com dois COMBOBOX,
onde o primeiro Combobox navega pela Plan1 – Plan2 e Plan3.
Enquanto o segundo Combobox navega pela Plan4 – Plan5 e Plan6.
Alguém tem algum exemplo?
Tenho um exemplo que funciona somente o 1º Combobox, enquanto o segundo, não roda.
EM ANEXO O EXEMPLO. (VBA/Excel)
Grato,
junho 27th, 2010 at 13:32
Robson,
As possibilidades são muitas. Melhor discurtirmos no fórum:
http://www.tomasvasquez.com.br/forum
Nos vemos lá!