我的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
代码显示所有行的消息框,无论它们是否被过滤掉。
答案 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