Boa tarde,
essa é a minha primeira pergunta no fórum, e também sou bastante leigo porem curioso.
Qualquer coisa que eu fizer de errado por favor me corrijam .
Estou tentando adaptar um codigo do Fernando Fernandes de busca no lisbox com filtro igual o google. Só que eu gostaria de fazer essa busca em um listview com matriz,
e empaquei em uma mensagem de :
Erro de compilação
Método ou membro de dados não encontrado.
Pois não sei como carregar os dados na listview.
Se alguém poder me ajudar serei grato.
Private Sub frm_cadserviço_Initialize() Dim Matriz As Variant Matriz = Wsh_cadastro.Range("Lst_Serviçosnovo").Value Me.LstCadServServ = Matriz End Sub Private Sub txtNomes2_Change() Dim mtzNomes As Variant Dim mtzFiltrada As Variant mtzNomes = Wsh_cadastro.Range("Lst_Serviçosnovo").Value If VBA.Len(Me.txtNomes2.Text) = 0 Then Me.LstCadServServ = mtzNomes Else mtzFiltrada = FilterArray(mtzNomes, Keep, xlNo, 2, Me.txtNomes2.Text) If VBA.IsArray(mtzFiltrada) Then [color=#FF0000]Me.LstCadServServ.Add = mtzFiltrada[/color]'Metodo ou membro de dados não encontrado. End If End If End Sub
Cara, não vim te dar a resposta para a dúvida, só quis passar para deixar um leve comentário.
Não sei se você está fazendo isso por aprendizado ou para alguma ferramenta do trabalho. Se for para ferramenta do trabalho eu aconselho não fazer, não é computacionalmente eficiente e só vai travar a sua aplicação, consome muito processamento o código ler toda a sua matriz e carregar para a listbox toda vez que você digitar uma nova letra.
Eu precisei adaptar isso à um projeto no trabalho e eu acabei fazendo com que pesquise somente quando eu pressionar o botão de consulta, assim não consome muito a sua aplicação.
Estou anexando uma foto de como fica e a baixo coloco o código que fiz para o botão de pesquisa, veja se consegue entender e adaptar para o seu caso, se achar interessante.
Private Sub Pesquisar_Click() Dim cotacoes_unicas As New Collection Dim celly As Range lista_pesquisa.Clear Application.ScreenUpdating = False SAP.Range("tb_sap[Num_Cotacao]").AdvancedFilter Action:=xlFilterInPlace, Unique:=True For Each celly In SAP.Range("tb_sap[Num_Cotacao]").SpecialCells(xlCellTypeVisible) cotacoes_unicas.Add celly.Value Next celly SAP.ShowAllData SAP.Range("tb_sap").AutoFilter Application.ScreenUpdating = True If pesquisar_por.Value = "" Then For k = 1 To cotacoes_unicas.Count lista_pesquisa.AddItem cotacoes_unicas(k) Next k Else For p = 1 To cotacoes_unicas.Count If InStr(1, cotacoes_unicas(p), Trim(pesquisar_por.Value)) Then lista_pesquisa.AddItem cotacoes_unicas(p) End If Next p End If End Sub
Se a resposta lhe foi útil, clique no joinha!
Skulden, na verdade são as duas coisas, quero aprender a trabalhar com matrizes e estou implantando essa busca em um trabalho.
Com relação ao que você me passou estou com um problema é que tenho uma listview onde preciso fazer a busca e não tenho muita facilidade ainda em adaptar códigos.
Ao tentar rodar o código tenho um mensagem de variável não definida. nessa sigla SAP que fica antes do Range.
será que você pode me ajudar?
Private Sub BtPesquisaServiço_click() Dim cotacoes_unicas As New Collection Dim celly As Range LstCadServServ.ListItems.Clear Application.ScreenUpdating = False SAP.Range("Lst_Serviçosnovo[Wsh_cadastro]").AdvancedFilter Action:=xlFilterInPlace, Unique:=True For Each celly In SAP.Range("Lst_Serviçosnovo[Wsh_cadastro]").SpecialCells(xlCellTypeVisible) cotacoes_unicas.Add celly.Value Next celly SAP.ShowAllData SAP.Range("Lst_Serviçosnovo").AutoFilter Application.ScreenUpdating = True If pesquisar_por.Value = "" Then For k = 1 To cotacoes_unicas.Count LstCadServServ.AddItem cotacoes_unicas(k) Next k Else For p = 1 To cotacoes_unicas.Count If InStr(1, cotacoes_unicas(p), Trim(pesquisar_por.Value)) Then LstCadServServ.AddItem cotacoes_unicas(p) End If Next p End If End Sub