使用 VBA 从 Table 中选定范围内的每个单元格获取行号?
Get Row number from each cell in selected range in Table with VBA?
嗯。例如,如果我有一个 table 和一个列“countries” 和另一个 "cities" 并且我对国家/地区进行了筛选。如何从使用 VBA?
过滤的每个寄存器中获取行号
我喜欢获取行号:2 和 6。
提前致谢。
使用 table 的 ListRows
方法,遍历每一行。
在这种情况下,您可以打印 table 中符合 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
需要记住的一些事情:
- 如果 sheet 不是作品中的第一名,您可能需要更改
Worksheets(1)
上的索引编号sheet collection.
- 如果 table 被命名为其他名称,您可能需要更改
.ListObjects("Table1")
上的 table 名称。
这可能是另一个解决方案:
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
嗯。例如,如果我有一个 table 和一个列“countries” 和另一个 "cities" 并且我对国家/地区进行了筛选。如何从使用 VBA?
过滤的每个寄存器中获取行号我喜欢获取行号:2 和 6。
提前致谢。
使用 table 的 ListRows
方法,遍历每一行。
在这种情况下,您可以打印 table 中符合 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
需要记住的一些事情:
- 如果 sheet 不是作品中的第一名,您可能需要更改
Worksheets(1)
上的索引编号sheet collection. - 如果 table 被命名为其他名称,您可能需要更改
.ListObjects("Table1")
上的 table 名称。
这可能是另一个解决方案:
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