2017-02-06 110 views
1

我不知道这样做:VBA For循环性能

For a = Start_row To Sheet1.UsedRange.Rows.Count Step 1 

将意味着在每次执行检查For循环条件,它必须重新计算Sheet1.UsedRange.Rows.Count声明。也许它是第一次存储在内存中?

+2

我不会遍历无论如何,任何范围。获取工作表数据的副本到一个数组中并使用它。这可能会更快。 – pintxo

+0

否,它将基于第一个循环保持静态。如果计数第一次返回300,它将始终为300,直到For循环在start_row处结束。 –

+0

好的,谢谢Scott。很有帮助。 pinxto:不错的workarround也。 –

回答

0

不,For循环的结尾仅在开始时评估。

此外,要注意的是,UsedRange

  • 不一定开始在第一行
  • 并不一定在最后一个非空行结束