【问题标题】:VBA Excel - for each range failsVBA Excel - 每个范围都失败
【发布时间】:2015-10-04 18:13:33
【问题描述】:

在下面的代码中,范围内的每个范围都失败了。 r 不是返回单个单元格,而是返回整个父范围。

我之前创建了一个类模块,其中包含一个名为“range”的 get 属性。这似乎是打破循环的原因。但是,我已经删除了该模块并重新启动了 excel / 甚至重新启动了计算机。并且循环仍然失败。

有什么想法吗?

Private Sub GetIters()

    Dim FilterRng       As Range
    Dim ItersRng        As Range
    Dim r               As Range

    Set FilterRng = pFieldRng.Resize(pCountRow + 1, COUNTCOL)
    Set ItersRng = FilterRng.Columns(ITERPOS).Offset(1, 0).Resize(pCountRow, 1)

    Debug.Print IterRng.Address 'returns $B$2:$B$281

    For Each r In IterRng

        Debug.Print r.Address 'returns $B$2:$B$281

    Next r

End Sub

【问题讨论】:

    标签: vba for-loop range each


    【解决方案1】:

    错过了变量的“s”?

    For Each r In IterRng
    

    应该是

    For Each r In ItersRng
    

    除了代码在这里工作

    【讨论】:

    • 一个完美的例子说明为什么将Option Explicit 放在每个模块的顶部是一个好主意 - 在 VBE 窗口中选择工具 ~ 选项 ~ 编辑器选项卡 ~ 勾选“需要变量声明”。
    • 谢谢我确实使用了 Option Explicit。在“IterRng”中是我在发布到 StackOverflow 时犯的一个错字。还有其他想法吗?我确信这与我创建一个名为“Range”的类模块获取属性有关。但我已经删除了该属性,甚至删除了整个类模块。
    • 我手动将 itersrng 设置为 $B$2:$B$281 并且它在这里打印了正确的范围。你试过一张空白的新纸吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 2010-12-04
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多