【问题标题】:How to iterate through a variable-column-length range in Excel using VBA如何使用 VBA 遍历 Excel 中的可变列长度范围
【发布时间】:2012-03-23 17:46:09
【问题描述】:

例如,如果一个工作表中的数据如下所示:

UsedRange.Columns.Count 为 6,这是所有行的最大列数。 即使我迭代使用

For each row in UsedRange.Rows
       For each cell in row.Cells
           ...
       Next cell
Next row

每行仍然数 6。

【问题讨论】:

  • 我想为第 1 行迭代 6 次,为第 2 行迭代 3 次,等等。你明白我的意思吗?
  • 你为什么要那个?您可以在 vba 的迭代中测试空单元格,也可以对每一行使用 =count(1:1) / =counta(1:1) 公式...
  • 知道了。谢谢。我认为每一行都有一个类似的 UsedColumn 功能可以包装空测试。

标签: excel vba loops


【解决方案1】:

如果单元格为空,请退出单元格循环。

For Each Row In UsedRange.Rows
   For Each cell In Row.Cells
       If IsEmpty(cell) Then
            Exit For
       End If

       'Do what you want here...

   Next cell
Next Row

【讨论】:

  • “如果单元格为空,则”行包含“需要运行时错误 '424' 对象。”将其更改为“If IsEmpty(cell) then”有效。谢谢!
【解决方案2】:

UsedRange 将返回一个联合范围。在你的情况下,一个小测试:

Sub test()
Debug.Print UsedRange.Address
End Sub

打印$A$1:$F$4

因此,您最好在执行代码之前检查单元格中是否有任何值。

查看这个 SO 线程:How to check if a cell is empty? 这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 2016-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多