Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
Por riberex00
Posts
#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.
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
#72384
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.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord