Página 1 de 2

Combobox relacionadas

Enviado: Sáb Set 14, 2019 11:13 pm
por pedro_mexico
boa noite amigos do forum.
tenho um formulario simples em que quero queria combinar valores das comboboxs-

A ideia é:
Combobox1 ter os valores da coluna A, e ao selecionar um valor ele fosse dar os valores correspondentes da coluna C

vou explicar

combobox1 valor igual a "Caixa de Velocidades" da coluna A e os resultados da coluna C a apresentar na combobox2 vai da linha C2 ate linha C13
combobox2 valor igual a "Carroçaria e Interior" da coluna A e os resultados da coluna C a apresentar na combobox2 vai da linha C14 ate linha C74

isto depois iria dar automaticamente o valor do codigo na textbox correspondente á linha(colunaD)

Combobox1=A2 "Caixa de Velocidades"
Combobox2=igual aos inntevalo com os valores seguintes da coluna C
"Apoios
Cabos e Tubos
Caixa de Velocidades - Vários
Caixa de Velocidades Automática - Completa
Caixa de Velocidades Manual - Completa
Disco de Embraiagem
Embraiagem - Completa
Embraiagem - Prato
Embraiagem - Rolamento de Encosto / Pressão
Embraiagem - Vários
Fuga de Óleo
Mudança de Óleo

Depois quando escolhece o valor da combobox2 ele iria aparecer o valor correspondende que esta na coluna D

Alguem consegue ajudar com esta duvida.
envio anexo com ficheiro
Obrigado

Re: Combobox relacionadas

Enviado: Dom Set 15, 2019 10:21 am
por Reinaldo
Experimente:
Altere/Inclua a rotina initialize do seu modelo conforme abaixo:

Código: Selecionar todos

Private Sub UserForm_Initialize()
Dim linha As Integer
linha = 2
'Inclui na comoboox1 os valores na coluna "A" da planilha "Folha1"
For linha = 2 To Range("A1").End(xlDown).Row
ComboBox1.AddItem Folha1.Cells(linha, 1)
Next
End Sub
Altere/inclua a rotina Change do Combobox1 conforme abaixo:

Código: Selecionar todos

Private Sub ComboBox1_Change()
Dim x As Integer, i As Integer
'Limpa os dados ca Combobox2
ComboBox2.Clear
i = 0
'Popula a combobox2 para itens iguais ao valor na combobox1
For x = 2 To Range("B1").End(xlDown).Row
    If ComboBox1.Value = Folha1.Cells(x, 2).Value Then 'Se for igual
        ComboBox2.AddItem
        ComboBox2.List(i, 0) = Folha1.Cells(x, 3).Value 'Acrescenta na combo
        ComboBox2.List(i, 1) = x                                     'Acrescenta a referencia a linha onde está o registro Coluna Oculta
        i = i + 1
    End If
Next
End Sub
Alter/inclua a rotina change no combobox2:

Código: Selecionar todos

Private Sub ComboBox2_Change()
Me.TextBox1.Text = Folha1.Cells(ComboBox2.List(ComboBox2.ListIndex, 1), 4).Value 'Utiliza o valor da coluna oculta para trazer o valor dalinha coluna D
End Sub

Re: Combobox relacionadas

Enviado: Seg Set 16, 2019 8:53 pm
por pedro_mexico
Boa Noite Reinaldo.
antes demais, obrigado pelos codigos, era mesmo isso que eu queria.
Obrigado.

mas fiz o teste no ficheiro que enviei, e depois adaptei tambem ao ficheiro maior, e acontece nos dois a mesma coisa que é:
quando selecciono a combobox1, ele dá os valores da coluna A, mas em alguns valores ele na combobox 2 nao apresenta nenhum valor, e em outros valores ele da erro que vai na imagem em anexo.

Re: Combobox relacionadas

Enviado: Ter Set 17, 2019 7:42 am
por Reinaldo
Nãoconsigo ler a mensagem de erro, contudo experimente:
Altere a rotina ComboBox2_Change conforme abaixo:

Código: Selecionar todos

Private Sub ComboBox2_Change()
If ComboBox2.Value = "" Then
    TextBox1.Text = ""
    Exit Sub
End If
TextBox1.Text = Folha1.Cells(ComboBox2.List(ComboBox2.ListIndex, 1), 4).Value 'Utiliza o valor da coluna oculta para trazer o valor dalinha coluna D
End Sub

Re: Combobox relacionadas

Enviado: Ter Set 17, 2019 5:13 pm
por pedro_mexico
Boa noite amigo Reinaldo.
o codigo que enviou já da correto no ficheiro que coloquei na publicaçao,
mas nao encontro razao logica para ao transpor para o verdadeiro formulario ele chega ao " Motor (A9)" "Peritagem(A10)" "Pneus(A11)" e por ai fora e na combobox 2 nao aparece a listagem correspondente.

ja troquei no meu formulario original os nomes das comboboxs para ficar iguak ao ficheiro e aos codigos que enviou, mas chega a meio da linha "A" para baixo e os codigos correspondentes nao passam para a combobo2

Re: Combobox relacionadas

Enviado: Ter Set 17, 2019 10:24 pm
por Reinaldo
Primeiramente verifique se a descrição existente na coluna "A" corresponde a descrição existente na coluna "B", se houver algum caractere diferente esse "registro" não irá funcionar;
caso não seja isso e sem poder acompanhar/ver o o que ocorre, pelo menos para mim,não é possível entender/propor solução.

Re: Combobox relacionadas

Enviado: Qua Set 18, 2019 3:57 pm
por pedro_mexico
Amigo Reinaldo.
segue o ficheiro.
estranho, se colocar no ficheiro que so tem esse codigo da correctamente, se copiar para o meu, chega a metade dos valores e depois nao aparece nada na combobox2, mesmo estranho, ja tentei mudar as linhas e colunas mas dá no mesmo.

Re: Combobox relacionadas

Enviado: Seg Set 30, 2019 5:12 am
por Reinaldo
Muito provavelmente o "erro" ocorre quando a planilha/folha ativa ser outra que não a folha15.
Experimente:
para a comobox1

Código: Selecionar todos

Dim linha As Integer
linha = 2
'Inclui na comoboox1 os valores na coluna "A" da planilha "Folha15"
With Sheets("Cod.Manutencoes")
    For linha = 2 To .Range("A1").End(xlDown).Row
        ComboBox1.AddItem .Cells(linha, 1)
    Next
End With
Para combobox2

Código: Selecionar todos

Private Sub ComboBox1_Change()
Dim x As Integer, i As Integer
'Limpa os dados ca Combobox2
Combobox2.Clear
i = 0
'Popula a combobox2 para itens iguais ao valor na combobox1
With Sheets("Cod.Manutencoes") 'aqui determina "ler" na folha15
    For x = 2 To .Range("B1").End(xlDown).Row
        If ComboBox1.Value = .Cells(x, 2).Value Then 'Se for igual
            Combobox2.AddItem
            Combobox2.List(i, 0) = .Cells(x, 3).Value 'Acrescenta na combo
            Combobox2.List(i, 1) = x                                     'Acrescenta a referencia a linha onde está o registro Coluna Oculta
            i = i + 1
        End If
    Next
End With
End Sub

Re: Combobox relacionadas

Enviado: Seg Set 30, 2019 5:33 am
por Reinaldo
Para utilizar a planilha "dados" conforme sua MP, deve alterar o endereçamento da planilha ("Dados " ou Folha5) e coluna (conbteuro nas colunas S/T/U/V):
Preencher Combobox1

Código: Selecionar todos

'Inclui na comoboox1 os valores na coluna "S" da planilha "Dados5"
With Sheets("Dados ")
    For linha = 2 To .Range("S1").End(xlDown).Row
        ComboBox1.AddItem .Cells(linha, "S")
    Next
End With
Preencher Combobox2

Código: Selecionar todos

Private Sub ComboBox1_Change()
Dim x As Integer, i As Integer
'Limpa os dados ca Combobox2
Combobox2.Clear
i = 0
'Popula a combobox2 para itens iguais ao valor na combobox1
With Sheets("Dados ")
    For x = 2 To .Range("T1").End(xlDown).Row
        If ComboBox1.Value = .Cells(x, "T").Value Then 'Se for igual
            Combobox2.AddItem
            Combobox2.List(i, 0) = .Cells(x, "U").Value 'Acrescenta na combo
            Combobox2.List(i, 1) = x                                     'Acrescenta a referencia a linha onde está o registro Coluna Oculta
            i = i + 1
        End If
    Next
End With
End Sub
Preencher TextBox

Código: Selecionar todos

Private Sub ComboBox2_Change()
If Combobox2.Value = "" Then
    TextBox_1.Text = ""
    Exit Sub
End If
TextBox_1.Text = Folha5.Cells(Combobox2.List(Combobox2.ListIndex, 1), "V").Value 'Utiliza o valor da coluna oculta para trazer o valor dalinha coluna D
End Sub

Re: Combobox relacionadas

Enviado: Ter Out 01, 2019 8:46 pm
por pedro_mexico
Reinaldo, boa noite.
Muito obrigado, o codigo esta a funcionar bem.

Obrigado