Página 1 de 1

ComboBox dinâmica dependente com VBA

Enviado: 08 Out 2022 às 19:26
por riberex00
Pessoal, boa tarde. Estou tentando criar uma ComboBox dinâmica dependente com VBA, mas sem utilizar um UserForm. Criei duas ComboBox, 1ª) CmbCategoria que recebe os itens receita, despesa e investimento; 2ª) CmbDescrição (dependente), que recebe os itens salário, bonificação, hora extra, alimentação, aluguel, educação, farmácia, etc. A pasta de trabalho contém 3 abas, sendo uma o painel onde lanço os dados, uma segunda tabela que é a base de dados e uma outra aba que são as Listas. Essa última possui uma lista cujo cabeçalho tem o título RECEITA: receita, despesa e investimento; uma outra que são as DESPESAS e, uma terceira que são os INVESTIMENTOS. Para preencher a CmbCategoria, utilizei o evento "Open", que foi preenchida com sucesso, com os itens receita, despesa e investimento. Todavia a CmbDescrição começa bem, porém, quando chega na condicional "If ", que seria para iniciar a busca de dados nas listas, o código trava e aparece uma mensagem: Erro em tempo de execução 424, o objeto é obrigatório. Alguém poderia me ajudar a reparar isso? Obrigado.
Private Sub Workbook_Open()
Sheets("Painel").CmbCategoria.Clear
Sheets("Listas").Activate
Sheets("Listas").Range("E2").Select

Do While ActiveCell.Value <> ""
Sheets("Painel").CmbCategoria.AddItem ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Loop

Sheets("Painel").Activate
Sheets("Painel").CmbCategoria.ListIndex = 0
Sheets("Painel").Range("D14").Select
End Sub

Private Sub CmbCategoria_Change()
'Limpar CmbDescricao
CmbDescricao.Clear
'Selec cell ini busca dados
If CmbCategoria.Value = "Despesa" Then
Sheets("Listas").Activate
Range("G2").Select
ElseIf CmbCategoria.Value = "Invest" Then
Range("I2").Select
Else
Range("K2").Select
End If

'Adic itens na CmbDescricao
Do While ActiveCell.Value <> ""
CmbDescricao.AddItem ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Loop

'Deixar 1º item selecionado
CmbDescricao.ListIndex = 0
Range("D14").Select
End Sub

Re: ComboBox dinâmica dependente com VBA

Enviado: 08 Out 2022 às 21:14
por osvaldomp
Experimente após adicionar o nome da planilha ao comando, conforme em vermelho abaixo.

If Sheets("Painel").CmbCategoria.Value = "Despesa" Then

Idem ao comando ElseIf .

Dica - escreva os seus códigos sem utilizar os métodos Activate e Select, pois o uso deles acarreta alguns inconvenientes. Pesquise sobre isso se você tiver interesse.

Re: ComboBox dinâmica dependente com VBA

Enviado: 09 Out 2022 às 17:27
por riberex00
Olá Osvaldo. Vou tentar isso e te retorno. Obrigado pela dica.