• 0
pablomoreiragv

FILTRO LISTBOX COM TEXTBOX (ERROR 381)

Question

Olá,
        Estou fazendo um formulário de cadastro, onde eu clico em um item no Litsbox, e os dados são carregados no formulário com base em uma planilha. Tudo estava funcionando bem, até que eu fui fazer um filtro no listbox, com o que fosse digitado no campo NOME FANTASIA, e começou dar erro. O filtro funciona direitinho, mas ao clicar no item do listbox que deveria carregar o formulário vêm o erro. Queria que os dados fossem carregados nos campos como antes, só que agora, sejam as informações do item filtrado. Estou postando um imagnes exemplo, e abaixo os códigos que estão atualmente nos controles. Desde já agradeço.

Mensagem de Erro: ERRO EM TEMPO DE EXECUÇÃO 381: Não foi possível obter a propriedade List. Índice de matriz de propriedade inválido.

Código do Textbox que faz o filtro no Listbox

Private Sub txt_nome_fantasia_Change()
    Dim guia As Worksheet
    Dim linha As Integer
    Dim coluna As Integer
    Dim linhalistbox As Integer
    Dim valor_celula As String
    Dim conta_registros As Integer
    Dim valor_pesquisado As String
    Dim produtos
    Set guia = ThisWorkbook.Worksheets("Fornecedor")
    
    valor_pesquisado = Me.txt_nome_fantasia.Text
    
    linha = 3
    coluna = 6
    linhalistbox = 0
    conta_registros = 0
    
    Me.ListBox2.Clear
    
    With guia
        While .Cells(linha, coluna).Value <> Empty
            valor_celula = .Cells(linha, coluna).Value
            
            If UCase(Left(valor_celula, Len(valor_pesquisado))) = UCase(valor_pesquisado) Then
                
             With Me.ListBox2
             .AddItem
             .List(linhalistbox, 0) = Sheets("Fornecedor").Cells(linha, 1)
             .List(linhalistbox, 1) = Sheets("Fornecedor").Cells(linha, 2)
             .List(linhalistbox, 2) = Sheets("Fornecedor").Cells(linha, 3)
             .List(linhalistbox, 3) = Sheets("Fornecedor").Cells(linha, 4)
             .List(linhalistbox, 4) = Sheets("Fornecedor").Cells(linha, 5)
             .List(linhalistbox, 5) = Sheets("Fornecedor").Cells(linha, 6)
             .List(linhalistbox, 6) = Sheets("Fornecedor").Cells(linha, 7)
             .List(linhalistbox, 7) = Sheets("Fornecedor").Cells(linha, 😎
             .List(linhalistbox, 😎 = Sheets("Fornecedor").Cells(linha, 9)
             .List(linhalistbox, 9) = Sheets("Fornecedor").Cells(linha, 10)
            
            
              linhalistbox = linhalistbox + 1
             conta_registros = conta_registros + 1
             End With
                
            End If
            linha = linha + 1
        Wend
    End With
'    filtro2 ' chama o procedimento segundo filtro que mostra o código da empresa' segundo filtro que mostra o código da empresa
    produtos = conta_registros & "  Produtos Cadastrados"
End Sub

=====================================================================================

Código do Listbox que carrega os campos do formuláro

Private Sub ListBox2_Change()

txt_cod_sap.Text = ListBox2.List(ListBox2.ListIndex, 0)
txt_status.Text = ListBox2.List(ListBox2.ListIndex, 1)
txt_cnpj.Text = ListBox2.List(ListBox2.ListIndex, 2)
txt_razao_social.Text = ListBox2.List(ListBox2.ListIndex, 3)
txt_nome_fantasia.Text = ListBox2.List(ListBox2.ListIndex, 4)
txt_insc_estadual.Text = ListBox2.List(ListBox2.ListIndex, 5)
txt_email.Text = ListBox2.List(ListBox2.ListIndex, 6)
cbx_ramo.Text = ListBox2.List(ListBox2.ListIndex, 7)
txt_nome_contato.Text = ListBox2.List(ListBox2.ListIndex, 😎
txt_contato_fone.Text = ListBox2.List(ListBox2.ListIndex, 9)
txt_logradouro.Text = ListBox2.List(ListBox2.ListIndex, 12)
txt_cidade.Text = ListBox2.List(ListBox2.ListIndex, 13)
cbx_recibo.Text = ListBox2.List(ListBox2.ListIndex, 14)
cbx_pagamento.Text = ListBox2.List(ListBox2.ListIndex, 15)
cbx_prazo.Text = ListBox2.List(ListBox2.ListIndex, 16)
    
End Sub

Edited by pablomoreiragv

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Segue modelo do que estou fazendo. Ela é de meu uso pessoal. Veja que a medida em que se preenche o campo NOME FANTASIA, o listbox aplica o filtro. O que eu queria, era que depois de filtrado, ao clicar no item do listbox, os campos TEXTBOX's sejam preenchidos. Só que ao fazer isso, vêm o erro. Antes de inserir o código do filtro, o preenchimento funcionava normalmente, mas, preciso do filtro pois são muitos fornecedores para encontrar. 

Download: https://drive.google.com/file/d/1OyvhEqJcz-iHAyCZA3prTIFm7YXgv0dZ/view?usp=sharing

 

Obrigado

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.