1

好。例如,如果我有一个表格,其中有一列“国家”和另一个“城市”,并且我对国家进行了过滤。如何从使用 VBA 过滤的每个寄存器中获取行号?

在此处输入图像描述

我喜欢获取行号:2 和 6。

在此处输入图像描述

提前致谢。

4

2 回答 2

1

使用ListRows表格的方法,循环遍历每一行。

在这种情况下,您可以打印表中通过您的条件的所有行Not ...Hidden

Sub printUnhiddenRows()

    Dim r As ListRow, tbl As ListObject
    Set tbl = ThisWorkbook.Worksheets(1).ListObjects("Table1")
    
    For Each r In tbl.ListRows
        If Not r.Range.Rows.Hidden Then Debug.Print r.Range.Row
    Next r

End Sub

一些要记住的事情:

  • Worksheets(1)如果工作表不是工作表集合中的#1,您可能需要更改索引号。
  • .ListObjects("Table1")如果表被命名为其他名称,您可能需要更改表名。
于 2018-03-29T22:56:26.177 回答
1

这可能是另一种解决方案:

 Dim rngTable As Range
Dim country As Range
Set rngTable = Range("Table1[Country]")

    rngTable.Select
    Selection.SpecialCells(xlCellTypeVisible).Select
    For Each country In Selection.Cells
        MsgBox country.Row
    Next
于 2018-03-29T23:02:31.720 回答