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
Pergunta
pablomoreiragv
Olá,
Editado por pablomoreiragvEstou 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
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
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.