DE LISTBOX PARA LISTVIEW - VBA
Olá pessoal.Achei essa rotina (site Tomas Vasquez) para filtrar dados de um listbox digitando o critério em um textbox no EXCEL – VBA.Como ficaria a mesma rotina só que com um ListView????
Private TextoDigitado As String
--------------------------------------
Private Sub TextBox1_Change()
TextoDigitado = TextBox1.Text
Call PreencheLista
End Sub
---------------------------------------
Private Sub UserForm_Initialize()
Call PreencheLista
End Sub
---------------------------------------
Private Sub PreencheLista()
Dim ws As Worksheet
Dim i As Integer
Dim TextoCelula As String
Set ws = ThisWorkbook.Worksheets(1)
i = 1
ListBox1.Clear
With ws
While .Cells(i, 1).Value <> Empty
TextoCelula = .Cells(i, 1).Value
If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then
ListBox1.AddItem .Cells(i, 1)
End If
i = i + 1
Wend
End With
End Sub
------------------------------------------------------------
Private TextoDigitado As String
--------------------------------------
Private Sub TextBox1_Change()
TextoDigitado = TextBox1.Text
Call PreencheLista
End Sub
---------------------------------------
Private Sub UserForm_Initialize()
Call PreencheLista
End Sub
---------------------------------------
Private Sub PreencheLista()
Dim ws As Worksheet
Dim i As Integer
Dim TextoCelula As String
Set ws = ThisWorkbook.Worksheets(1)
i = 1
ListBox1.Clear
With ws
While .Cells(i, 1).Value <> Empty
TextoCelula = .Cells(i, 1).Value
If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then
ListBox1.AddItem .Cells(i, 1)
End If
i = i + 1
Wend
End With
End Sub
------------------------------------------------------------
So basta mudar duas linhas...
Private Sub PreencheLista()
Dim ws As Worksheet
Dim i As Integer
Dim TextoCelula As String
Set ws = ThisWorkbook.Worksheets(1)
i = 1
[ô]ListBox1.Clear
Listview1.clear
With ws
While .Cells(i, 1).Value <> Empty
TextoCelula = .Cells(i, 1).Value
If UCase(Left(TextoCelula, Len(TextoDigitado))) = UCase(TextoDigitado) Then
[ô]ListBox1.AddItem .Cells(i, 1)
ListView1.ListItems.Add ,, .Cells(i, 1)
End If
i = i + 1
Wend
End With
End Sub
Webmaster, da maneira que colocaste acima eu já havia tentado. O que ocorre :
- ListView.clear da erro o certo deveria ser ListView.columnheaders.clear,
- A propriedade View do ListView deve ser lvReport,
- GridLines = true,
-Com a linha ListView.ListItens.Add ,, .Cells(i,1), cada caracter digitado no textbox , o item correspondente no listview começa a ser inserido e vai se repetindo.
Sendo assim , voltamos a estaca zero....
- ListView.clear da erro o certo deveria ser ListView.columnheaders.clear,
- A propriedade View do ListView deve ser lvReport,
- GridLines = true,
-Com a linha ListView.ListItens.Add ,, .Cells(i,1), cada caracter digitado no textbox , o item correspondente no listview começa a ser inserido e vai se repetindo.
Sendo assim , voltamos a estaca zero....
Vamos la:
- ListView.clear da erro o certo deveria ser ListView.columnheaders.clear,
Nao necessariamente isso causa um erro.
Adicione um columnheader ao listview e pronto...
- A propriedade View do ListView deve ser lvReport,
Ok, isso voce configura.
- GridLines = true,
Ok, isso voce configura.
-Com a linha ListView.ListItens.Add ,, .Cells(i,1), cada caracter digitado no textbox , o item correspondente no listview começa a ser inserido e vai se repetindo.
Crie um key para cada item adicionado e faca com que eles nao se dupliquem criando uma funcao de insercao que trate o erro caso o key ja exista.
- ListView.clear da erro o certo deveria ser ListView.columnheaders.clear,
Nao necessariamente isso causa um erro.
Adicione um columnheader ao listview e pronto...
- A propriedade View do ListView deve ser lvReport,
Ok, isso voce configura.
- GridLines = true,
Ok, isso voce configura.
-Com a linha ListView.ListItens.Add ,, .Cells(i,1), cada caracter digitado no textbox , o item correspondente no listview começa a ser inserido e vai se repetindo.
Crie um key para cada item adicionado e faca com que eles nao se dupliquem criando uma funcao de insercao que trate o erro caso o key ja exista.
Tópico encerrado , respostas não são mais permitidas