Ir para conteúdo
Fórum Script Brasil
  • 0

FILTRO LISTBOX COM TEXTBOX (ERROR 381)


pablomoreiragv

Pergunta

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

Editado por pablomoreiragv
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 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

Link para o comentário
Compartilhar em outros sites

  • 0

Boa tarde @pablomoreiragv

Você esta fazendo seu código ficar dando loop por isso esta aparecendo o erro.

...
txt_nome_fantasia.Text = ListBox2.List(ListBox2.ListIndex, 4)
...

Ao alterar o seguinte campo ele tentar pesquisar novamente os campos que você já preencheu.

image.thumb.png.d1b7c646c123dd3aaac3fe791d17c948.png

Tenta executar o seu código marcando essas linhas que vai ver a questão que te mostrei.

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...