- 08 Out 2022 às 19:26
#72383
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.
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
Código: Selecionar todos
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