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.
  • Avatar do usuário
Avatar do usuário
Por Nelisa
Posts Avatar
#20315
Boa tarde!

Estou montando um formulário que contém duas caixas de combinação.
A primeira "Espécie" apresenta os dados que constam na ListaESPÉCIE que está indicada na RowSource.
A segunda "Raça" deve exibir somente os dados relativos à especie, ou seja, se na Espécie constar GATO, deverá apresentar somente Raças de Gato, se na Espécie constar CACHORRO, deverá apresentar somente Raças de Cachorro.

No Excel eu consigo vincular está condição através da validação de dados com a função INDIRETO.

Alguém poderia me orientar como fazer o mesmo usando UserForm.

Agradeço antecipadamente.
Por babdallas
#20318
Nelisa,

a função indireto não tem no VBA. Sugiro que vc faça algo parecido com isso:

Private Sub cmb_especie_Change()

If Me.cmb_especie.Value = "" Then
Me.cmb_raca.RowSource = ""
Else
Me.cmb_raca.RowSource = Me.cmb_especie.Value
End If

End Sub

Private Sub UserForm_Activate()

Me.cmb_especie.RowSource = "especie"

End Sub
Por babdallas
#20325
Nelisa, aqui funcionou. Lembrando que especie, Gato e Cachorro foram nomeados como intervalos nomeados em gerenciador de nomes.
Em especie tinha Gato e Cachorro nas células a2 e a3. Nomeei estas células como especie.
Nas celulas b2 e b3 digitei raça g1 e raça g2. Nomeei estas células como Gato.
Nas celulas c2 e c3 digitei raça g1 e raça c2. Nomeei estas células como Cachorro.
Avatar do usuário
Por Nelisa
Posts Avatar
#20330
Agradeço mais uma vez, mas realmente não funcionou em meu formulário.
Encontrei o código abaixo, disponibilizado pelo Renam Ruthes, fiz os ajustes necessários nos nomes e deu certo !

Private Sub cmb_UF_Click()
cmb_cidade.Clear
estado = cmb_UF
linha = 2
Do Until Sheets("cidades").Cells(linha, 1) = ""
If Sheets("cidades").Cells(linha, 2) = estado Then
cmb_cidade.AddItem Sheets("cidades").Cells(linha, 3)
linha = linha + 1
Else
linha = linha + 1
End If
Loop
End Sub

Private Sub UserForm_Initialize()
linha = 2
Do Until Sheets("estados").Cells(linha, 1) = ""
cmb_UF.AddItem Sheets("estados").Cells(linha, 1)
linha = linha + 1
Loop
End Sub
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