Página 1 de 1

Caixa de Combinação indireta

Enviado: 18 Fev 2017 às 17:48
por Nelisa
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.

Re: Caixa de Combinação indireta

Enviado: 18 Fev 2017 às 21:17
por babdallas
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

Caixa de Combinação indireta

Enviado: 19 Fev 2017 às 09:40
por Nelisa
Grata pelo retorno, mas não funcionou.

Re: Caixa de Combinação indireta

Enviado: 19 Fev 2017 às 10:07
por babdallas
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.

Re: Caixa de Combinação indireta

Enviado: 19 Fev 2017 às 18:30
por Nelisa
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