【发布时间】:2023-04-07 23:16:01
【问题描述】:
我有一个名为“Abschluss”的工作表。在这个工作表中,我使用过滤器来获取我想用我的 vba 脚本处理的数据范围。所以我只想处理可见行。 我的 vba 脚本看起来像
For Each i In Worksheets("Abschluss").SpecialCells(xlCellTypeVisible).Rows
If (WorksheetFunction.CountIf(Range("B2:B" & i), Cells(i, 2)) = 1) Then _
Umsetzung_Kapitel_1.AddItem Cells(i, 2)
Next
这不起作用,我收到运行时错误 438。你知道问题出在哪里吗?
我假设Worksheets("Abschluss").SpecialCells(xlCellTypeVisible).Rows 返回了错误的数据类型,但我无法修复它。
【问题讨论】:
-
尝试将 i 声明为 long,然后执行
For i = 1 to Worksheets("Abschluss").SpecialCells(xlCellTypeVisible).Rows.Count -
恐怕这不是解决方案。问题是,当我过滤一些数据时,我得到例如行号 2,5,200 和 202。所以
Worksheets("Abschluss").SpecialCells(xlCellTypeVisible).Rows.Count将返回4,for 循环将通过行号 1 到 4,但是它应该经过 2,5,200 和 202。这就是我使用 for-each 循环的原因。