Objeto ListView com Filtro
Como vimos na postagem anterior - Trabalhando com Objetos no Excel - ListView - o listview é um objeto muito interesssante de ser utilizado em projetos desenvolvidos no Excel.
Nesta postagem, estarei dando outras explicações sobre a utilização do listview: com a possibilidade de filtrar as informações que são apresentadas nele.
Quando um formulário que contém um listview é carregado, o mesmo (listview) pode ser preenchido com informações (dados).
Veja a figura ao lado. O código para executar este preenchimento foi explicado na postagem: Trabalhando com Objetos no Excel - ListView.
Notamos, na figura ao lado, que há trêz países sendo apresentados com suas devidas Unidades da Federação (UF / Estados).
Para que possamos aplicar um filtro nesta listagem fazendo com que apareça apenas determinado país, podemos utilizar o objeto ComboBox.
No exemplo ao lado, o objeto ComboBox foi nomeado: 'cdPais'.
Para que o objeto ComboBox (cdPais) filtre os dados que vão ser listados na ListView, podemos utilizar o código (macro) a seguir (observação: este código deve ser colocado no evento Change do objeto cdPais):
A linha destacada na cor cinza no código acima é responsável pela aplicação do filtro.
UCase: Retorna uma seqüência de caracteres convertida em letras maiúsculas.
Like: Compara sequências de caracteres.
* (Asterísco): corresponde a zero ou masi caracteres.
Nesta postagem, estarei dando outras explicações sobre a utilização do listview: com a possibilidade de filtrar as informações que são apresentadas nele.
Quando um formulário que contém um listview é carregado, o mesmo (listview) pode ser preenchido com informações (dados).
Veja a figura ao lado. O código para executar este preenchimento foi explicado na postagem: Trabalhando com Objetos no Excel - ListView.
Notamos, na figura ao lado, que há trêz países sendo apresentados com suas devidas Unidades da Federação (UF / Estados).
Para que possamos aplicar um filtro nesta listagem fazendo com que apareça apenas determinado país, podemos utilizar o objeto ComboBox.
No exemplo ao lado, o objeto ComboBox foi nomeado: 'cdPais'.
Para que o objeto ComboBox (cdPais) filtre os dados que vão ser listados na ListView, podemos utilizar o código (macro) a seguir (observação: este código deve ser colocado no evento Change do objeto cdPais):
Private Sub cdPais_Change()
lastRow = Plan1.Cells(Rows.Count, "a").End(xlUp).Row
ListView1.ListItems.Clear
' Adiciona itens
For x = 2 To lastRow
If UCase(Plan1.Cells(x, 2)) Like "*" & UCase(cdPais) & "*" Then
Set li = ListView1.ListItems.Add(Text:=Plan1.Cells(x, "a").Value)
li.ListSubItems.Add Text:=Plan1.Cells(x, "b").Value
li.ListSubItems.Add Text:=Plan1.Cells(x, "c").Value
End If
Next
End Sub
lastRow = Plan1.Cells(Rows.Count, "a").End(xlUp).Row
ListView1.ListItems.Clear
' Adiciona itens
For x = 2 To lastRow
If UCase(Plan1.Cells(x, 2)) Like "*" & UCase(cdPais) & "*" Then
Set li = ListView1.ListItems.Add(Text:=Plan1.Cells(x, "a").Value)
li.ListSubItems.Add Text:=Plan1.Cells(x, "b").Value
li.ListSubItems.Add Text:=Plan1.Cells(x, "c").Value
End If
Next
End Sub
A linha destacada na cor cinza no código acima é responsável pela aplicação do filtro.
UCase: Retorna uma seqüência de caracteres convertida em letras maiúsculas.
Like: Compara sequências de caracteres.
* (Asterísco): corresponde a zero ou masi caracteres.
&: Concatena (junta) sequências de caracteres.
Note na figura acima: assim que formos digitando o nome do país, o código que está relacionado a este objeto é executado listando apenas o país que tem o nome ou parte do nome escrito com suas respectivas UF (Estados).
Muito boa esta matéria. Figuras e conteúdo muito claros. Consegui entender muitobem e já estou adaptando as minhas necessidades.
ResponderExcluirParabéns professor.
Ivair, como ordenar uma das colunas do listview em ordem alfabética?
ResponderExcluirAlan
cara consegui carregar os valores com base na lição anterior, quando o form é iniciado todos os dados são carregados, mas quando aplico o filtro os dados não estão filtrando, continua todos os dados da tela, porque será que não está dando certo?
ResponderExcluir