Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Combobox relacionadas

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
pedro_mexico
Consultor
Consultor
Mensagens: 285
Registrado em: Qua Dez 09, 2015 5:54 pm

Combobox relacionadas

Mensagem 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
Anexos
Códigos anomalias_Manutenção & IPO.rar
(30.04 KiB) Baixado 257 vezes


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Combobox relacionadas

Mensagem 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


pedro_mexico
Consultor
Consultor
Mensagens: 285
Registrado em: Qua Dez 09, 2015 5:54 pm

Re: Combobox relacionadas

Mensagem 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.
Anexos
erro.jpg
erro.jpg (244.75 KiB) Exibido 8488 vezes


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Combobox relacionadas

Mensagem 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


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


pedro_mexico
Consultor
Consultor
Mensagens: 285
Registrado em: Qua Dez 09, 2015 5:54 pm

Re: Combobox relacionadas

Mensagem 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


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Combobox relacionadas

Mensagem 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.


pedro_mexico
Consultor
Consultor
Mensagens: 285
Registrado em: Qua Dez 09, 2015 5:54 pm

Re: Combobox relacionadas

Mensagem 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.
Anexos
Formulario.rar
(4.76 MiB) Baixado 254 vezes


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Combobox relacionadas

Mensagem 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


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Combobox relacionadas

Mensagem 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


pedro_mexico
Consultor
Consultor
Mensagens: 285
Registrado em: Qua Dez 09, 2015 5:54 pm

Re: Combobox relacionadas

Mensagem por pedro_mexico »

Reinaldo, boa noite.
Muito obrigado, o codigo esta a funcionar bem.

Obrigado


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder