listview仅反映过滤后的数据

时间:2015-11-10 09:45:23

标签: excel excel-vba vba

我想只显示过滤后的数据,但下面的代码是从电子表格中检索所有数据。

列表视图应仅反映列A的值与textbox1.text匹配的数据。请协助。

Dim item As ListItem
Dim linhafinal As Integer

ListView8.ListItems.Clear

linhafinal = k + 1

For i = 2 To linhafinal
    Set item = ListView8.ListItems.Add(, , ws1.Cells(i, 1))
    item.ListSubItems.Add Text:=ws1.Cells(i, 2)
    item.ListSubItems.Add Text:=ws1.Cells(i, 3)
    item.ListSubItems.Add Text:=ws1.Cells(i, 4)
    item.ListSubItems.Add Text:=ws1.Cells(i, 5)
    item.ListSubItems.Add Text:=ws1.Cells(i, 6)
    item.ListSubItems.Add Text:=ws1.Cells(i, 7)
    item.ListSubItems.Add Text:=ws1.Cells(i, 8)
    item.ListSubItems.Add Text:=ws1.Cells(i, 9)
    item.ListSubItems.Add Text:=ws1.Cells(i, 10)
Next

1 个答案:

答案 0 :(得分:1)

您正在遍历整个范围并将其添加到listview,因此您将获得所有数据。检查值是否与TextBox1.Text匹配,然后添加它们。

这是你正在尝试的(未经测试)?

Dim item As ListItem
Dim linhafinal As Integer

ListView8.ListItems.Clear

linhafinal = k + 1

For i = 2 To linhafinal
    If ws1.Cells(i, 1).Value = TextBox1.Text Then
        Set item = ListView8.ListItems.Add(, , ws1.Cells(i, 1))
        item.ListSubItems.Add Text:=ws1.Cells(i, 2)
        item.ListSubItems.Add Text:=ws1.Cells(i, 3)
        item.ListSubItems.Add Text:=ws1.Cells(i, 4)
        item.ListSubItems.Add Text:=ws1.Cells(i, 5)
        item.ListSubItems.Add Text:=ws1.Cells(i, 6)
        item.ListSubItems.Add Text:=ws1.Cells(i, 7)
        item.ListSubItems.Add Text:=ws1.Cells(i, 8)
        item.ListSubItems.Add Text:=ws1.Cells(i, 9)
        item.ListSubItems.Add Text:=ws1.Cells(i, 10)
    End If
Next

或者,在过滤范围后,循环显示可见范围,然后将它们添加到列表视图中。目前你的代码正在添加所有这些...