循环复制格式化的代码段并插入它们x次。做不到10次是快的,但它很快开始慢下来的地步,在大约60左右,它需要大约一秒钟的每一个插入,并继续从那里慢下来。是什么导致它逐渐变慢?
While x < num
Debug.Print ("Running: " & x)
With Sheets(inoc)
.Activate
.Rows("12:15").Select
Selection.Copy
Selection.Insert Shift:=xlDown
End With
With Sheets(count)
.Activate
.Rows("17:28").Select
Selection.Copy
Selection.Insert Shift:=xlDown
.Range("C29").Value = "='Inoculation and Incubation'!B17"
End With
x = x + 1
Application.CutCopyMode = False
Wend
1条答案
按热度按时间h5qlskok1#
来自评论:
Avoid using
.Activate
and.Select
。While
...Wend
通常被认为已弃用。为什么会越来越慢:
任何时候一个刺穿墙之间的vba和工作表,它会慢一点。这种缓慢确实开始在循环中复合。对于您正在尝试做的事情(复制/插入),我们无法做更多的事情来使其更快,或者克服复合缓慢。这可能与excel必须在每个循环中重绘xml的事实有关,并且在将信息存储在内存中然后重绘xml时需要处理的数据越来越多。