我有一个已过滤的工作表,其中我需要column N
中的值。
此工作表在第1行中也有标签。一切都很完美,除非我在过滤器后面只剩下一行。在那一刻,我得到Error 13
。
我看到程序使用的值是来自cel A1
的值,这是标签中的textvalue
而不是column N
中的值。谁能告诉我我做错了什么?
Dim Rng As Range
Set Rng = Range("N2", Range("N2").End(xlDown)).Cells.SpecialCells(xlCellTypeVisible)
For Each cell In Rng.SpecialCells(xlCellTypeVisible)
score(y) = cell
totaal_k = totaal_k + score(y)
y = y + 1
Next cell
答案 0 :(得分:0)
这是发生在每个过滤后的行还是仅行641?
我认为xlDown就是问题所在。无论如何,你有没有预定义最后一行范围,还是它必须是动态的?如果有,那么我认为它可能是解决方案。如果不是,我会尝试以不同方式定义数据范围,例如通过实现快速功能来确定最后一行数据。可在此链接下找到示例:https://www.extendoffice.com/documents/excel/1721-excel-find-last-row-column-with-data.html
另外,作为故障排除的一部分,我建议在上面摘录的第4行放置一个断点,看看对单元格和Rng应用了哪些值。
现在我提到了它 - 我刚刚想到你使用xlCellTypeVisible两次 - 在你的Rng和后来引用那个Rng。如果您在设置变量时应用它,为什么以后再使用它?尝试从其中一个地方删除该部分,看看它是如何工作的。
答案 1 :(得分:0)
在与其方法/属性进行交互之前,请尝试检查Rng是否已实际设置。
Dim Rng As Range
Set Rng = Range("N2", Range("N2").End(xlDown))
If Not (Rng is nothing) then
For Each cell In Rng.SpecialCells(xlCellTypeVisible)
score(y) = cell
totaal_k = totaal_k + score(y)
y = y + 1
Next cell
End if