【问题标题】:excel vba for each loop takes 2 steps at once每个循环的excel vba一次需要2个步骤
【发布时间】:2010-11-10 08:51:15
【问题描述】:

我想处理 for 循环的每个元素。使用这段代码,为什么每隔一个元素就被处理一次?

For Each row In ws.Rows
    If IsEmpty(row.Cells(row.row, 1)) Then
        Exit For
    Else
        MsgBox row.Cells(row.row, 1).value
    End If
Next

提前感谢您的回答!

【问题讨论】:

  • 我已经有一段时间没有使用 VBA 了,但您不应该看 ws.Cells(row.row, 1) 而不是 row.Cells(row.row, 1) 吗?

标签: excel for-loop foreach vba


【解决方案1】:

不要引用 Row.Cells,而是引用 Worksheet.Cells。 此外,您可能希望选择工作表的 ActiveRange,这样可以防止 for-each 中出现大量无用的行。

查看 MSDN 以获取这方面的示例。

【讨论】:

    【解决方案2】:

    将 ws 设置为具有单元格范围 B1:B10 的范围,其中分别包含值 1-10 将产生所需的结果:

    子宏1() 暗淡为范围

    设置 ws = Range("B1:B10")

    对于 ws.Rows 中的每一行

    If IsEmpty(ws.Cells(Row.Row, 1)) Then
        Exit For
    Else
        MsgBox ws.Cells(Row.Row, 1).Value
    End If
    

    下一个

    结束子

    【讨论】:

      猜你喜欢
      • 2014-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-05
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      • 2013-08-07
      相关资源
      最近更新 更多