【问题标题】:(Excel VBA) loop through range with while or for?(Excel VBA)使用while或for循环遍历范围?
【发布时间】:2016-05-21 06:52:34
【问题描述】:

最近有人指出,某些 Excel 函数是易变的,这意味着每次工作表发生变化时都会触发它们,而其他函数则不会。现在这让我明白了我的大部分 VBA 使用都是在一个范围内循环的,我想知道这两种方法中的哪一种是首选的,为什么? 案例做while循环;

Dim i as long
i = 1
Do while cells(i,1) <> ""
    ...
    i = i + 1
Loop

或者for循环

Dim curCell as cell
for curCell = cells(1,1) to cells(1,1).end(xlDown)
    ...
Next curCell

(请注意,确切的代码可能不正确,因为我目前无法使用 Excel 访问计算机)

编辑(在约翰的话之后);据我在第一个示例中看到的,每次循环循环时都会请求目标单元格值,在第二个示例中,单元格只会被请求两次,并且 .end(xlDown) 不需要 vba 层,而是一个标准功能因此第二个选项可能运行得更快。

提前致谢

【问题讨论】:

  • 我看不出波动性与循环类型之间的选择之间有任何联系。这两个主题似乎毫无关联。循环的选择主要取决于口味。
  • 我明白你的意思,请看我的编辑。

标签: excel vba for-loop while-loop


【解决方案1】:

Do..WhileFor EachFor i = x to y 之间的时间没有差异。如果您想知道如何在每次循环时不计算,您可以在循环之前使用 Application.Calculation = xlCalculationManualApplication.Calculation =xlCalculationAutomaticafter。

当我说没有区别时,几乎没有,没什么可注意的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 2017-03-05
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    相关资源
    最近更新 更多