首页 > 解决方案 > 仅在未过滤数据时执行

问题描述

我的 vba 代码只能在过滤后可见的行上运行。

我的代码将为 table1 中的每一行返回一个 msgbox(并执行其他操作)。如果该行被“过滤掉”并因此未显示,则代码将转到下一行,而不显示 msgbox 等。

表 1 如下所示:

姓名 父亲姓名 邮编

彼得卡尔 3200

雅各布埃里克 2800

克里斯蒂安卡尔 3400

我试图跳过 higth = 0 或 EntireRow.Hidden 但没有成功的行。

我确信我正在以错误的方式做一件简单的事情。但请指教

Dim i As Integer
    Range("Tabel1[[#Headers],[Name]]").Select
For i = 1 To 3
MsgBox ("hey")
Next i

代码显示所有行的消息框,无论它们是否被过滤掉。

标签: excelvba

解决方案


使用表格SpecialCells()DataBodyRange通缉列

Dim rng As Range

For Each rng In ActiveSheet.ListObjects("Tabel1").ListColumns("Name").DataBodyRange.SpecialCells(xlCellTypeVisible)
    MsgBox ("hey from row " & rng.Row)
Next

推荐阅读