none
PESQUISAR ITEM EM UMA LISTBOX E SELECIONA-LO RRS feed

  • Pergunta

  • Olá

    Amigos tenho 4 listbox uma ao lado da outra onde são carregadas algumas informações de umas colunas especificas no excel.

    Gostaria que ao selecionar um item da primeira listbox faça uma verificação junto as outras listbox SE Planilha1.Cells(linha, 2) for igual a algum conteudo carregado em uma listbox deixe selecionado este item na listbox.

    Assim ao mudar a seleção da primeira listbox as outras automaticamente selecionassem os dados correspondentes a linha e coluna especifica.

    Alguem poderia me dar uma mão até agora quebrei a cabeça mais não sei como bucar nem como selecionar algum item em uma listbox

    Aguado e obrigado quem puder ajudar

    terça-feira, 20 de fevereiro de 2018 17:55

Todas as Respostas

  • Acho que seria o ideal neste caso, voce disponibilizar um modelo do seu arquivo, para que possamos entender  melhor o que quer fazer. 

    De qualquer forma, segue um exemplo um de um item selecionado no listbox.

    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
        Dim j!
        Dim itemSelecionado As String
        
        With ListBox1
            
            If .ListIndex <> -1 Then
                For j = 0 To .ColumnCount - 1
                    itemSelecionado = itemSelecionado & .Column(j) & vbCrLf
                    Exit For
                Next j
            End If
            
        End With
        
        MsgBox itemSelecionado
        
    End Sub


    • Editado Ricardo Vba terça-feira, 20 de fevereiro de 2018 18:12
    terça-feira, 20 de fevereiro de 2018 18:11
  • Obrigado pela resposta, não há necessidade de disponibilizar o arquivo, se eu ver um jeito de buscar uma informação/item e linha (não sei se listbox trabalha com linha) e seleciona-lo  ja vou conseguir fazer o que pretendo

    deixa eu ver se entendi

    With ListBox1 --- WITH ESTA MOSTRANDO QUE AS AÇÕES ABAIXO VÃO SER NESTE ListBox1??

    If .ListIndex <> -1 Then --- LISTINDEX FALA QUE VAI VAZER AS VERIFICAÇÕES NAS

    INFORMAÇÕES DENTRO DA ListBox1

    For j (ESTA É UMA VARIAVEL?)= 0 To .ColumnCount - 1 itemSelecionado (ESTA É UMA VARIAVEL?)= itemSelecionado & .Column(j) & vbCrLf ESPECIALMENTE NA LINHA ACIMA NÃO ENTENDI ISTO --> .Column(j) & vbCrLf

    Exit For Next j End If End With

    Se puder responder essas minhas duvidas vou ficar muito grato

    Obrigado

    terça-feira, 20 de fevereiro de 2018 18:34
  • With ListBox1 --- WITH ESTA MOSTRANDO QUE AS AÇÕES ABAIXO VÃO SER NESTE ListBox1?

    Sim isso para não ficar repetindo "ListBox1" a cada propriedade.

    If .ListIndex <> -1 Then --- LISTINDEX FALA QUE VAI VAZER AS VERIFICAÇÕES NAS

    O indice 0(zero) do Listbox, ou seja nada é o -1. Então esta é a condição para a próxima ação.

     For j (ESTA É UMA VARIAVEL?)= 0 To .ColumnCount - 1 
                    itemSelecionado (ESTA É UMA VARIAVEL?)= itemSelecionado & .Column(j) & vbCrLf
                    ESPECIALMENTE NA LINHA ACIMA NÃO ENTENDI ISTO --> .Column(j) & vbCrLf

    A variavel j inicia a partir do 0(zero) que é a 1ª coluna (indice) do listbox. ColumCount é o total de colunas. Se o laço iniciou do zero, por isso devemos referenciar com "-" (menus) 1.

     .Column(j)

    Referenciando a coluna, de acordo com a variavel "j"

     
    vbCrLf

    É uma quebra de linha, no caso somente para formatar a msgBox

      
    terça-feira, 20 de fevereiro de 2018 19:01
  • Obrigado esclareceu bem, porem como eu estou trabalhando somente com linhas, e trabalho mais com Do While então confunde um pouco.

    Poderia reescrever o codigo usando o Do While? por favor

    assim eu entenderia bem a logica

    Obrigado pela ajuda

    quarta-feira, 21 de fevereiro de 2018 14:43
  • Veja as alterações do meu exemplo, usando do while.

    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
        Dim j!: j = 0
        Dim itemSelecionado As String
        
        With ListBox1
            
            If .ListIndex <> -1 Then
                Do While j <= .ListCount - 1
                    itemSelecionado = itemSelecionado & .Column(j) & vbCrLf
                    Exit Do
                Loop
            End If
            
        End With
        
        MsgBox itemSelecionado
        
    End Sub


    Click em propor como resposta se foi util a voce. ricardodm@outlook.com.br

    quarta-feira, 21 de fevereiro de 2018 15:59
  • reescrevendo no meu jeito de programar :) seria desta forma?

    Dim linha As Integer
    
    linha = 3
    
    Do While Planilha1.Cells(linha, 3) <> ""
    
    if Planilha1.Cells(linha, 3) = Listbox1.ListIndex then
    Listbox1.ListIndex.Select
    exit do
    End If
    
    
    linha = linha + 1
    
    Loop
    
    
    

    Seria desta forma?, pois ele teria que ver a coluna que esta verificando se condiz com a linha que eu selecionei na primeira listbox, se sim ele seleciona o item na listbox

    Segue uma print do meu projeto 

    https://image.ibb.co/n5X6Hc/dawdawd.jpg

    Note que só a primeira listbox esta selecionado, estes listbox são alimentados por dados buscados na mesma linha só que em colunas diferentes no excel.

    gostaria usar este mesmo raciocinio para ele fazer uma comparação item por item na listbox verificando se o item condizer com a linha e coluna proposta então ira selecionado dentro da listbox

    Aguardo e Muito obrigado mais uma vez

    quarta-feira, 21 de fevereiro de 2018 18:19
  • Olá, poderia tirar só mais estas duvidas? Obrigado
    sexta-feira, 23 de fevereiro de 2018 10:29
  • Olá, alguem poderia me auxiliar?
    quarta-feira, 28 de fevereiro de 2018 13:23