仅在未过滤数据时执行

时间:2019-02-10 14:23:49

标签: excel vba

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

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

表1看起来像这样:

父亲名字邮编

彼得·卡尔3200

Jacob Eric 2800

克里斯蒂安·卡尔3400

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

我确定我做错了一件简单的事情。但是请指教

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

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

1 个答案:

答案 0 :(得分:1)

在您的表的SpecialCells()的{​​{1}}上使用DataBodyRange

Dim rng As Range

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