今天早上我上班,开始从昨天离开的同一个文件开始工作。现在,只要宏将值赋给单元格或清除它们,Excel就会减慢速度。我昨天离开之前闪电般快,现在每次需要2-3秒才能给单元格赋值。VBA/Excel突然慢速运行,无需更改代码
现在,其他具有相似宏的文件运行良好。这发生在另一个文件中,因此我恢复到了以前版本的文件,并且它运行良好,而慢速文件继续运行缓慢。我想我现在可以做到这一点,但在这种情况下,需要花费大量工作才能将该文件带到我拥有此版本的地方。我想知道是否有人知道可能会发生什么。这是Excel文件不时做的事情之一(如一种文件损坏),还是有修复?
我已经提供了下面的宏,尽管只要将值分配给单元格就会发生在整个文件中。我通过表示<---SLOW HERE
来标记故障区域。
我知道这一切听起来非常模糊,我知道我很少继续。也许信息不足,但这是我拥有的一切。没有理由(我可以看到)发生这种情况。我甚至重新启动了电脑......以防万一这个问题出现在Excel之外。不用找了。
如果您需要更多信息,我会尽我所能来阐述我是否可以。感谢您的帮助和理解。
例如宏基:
Sub DeleteButton1_Click()
Call UnlockSettingsWorksheet
Sheet24.Range("C18:E18").Value = "" <---SLOW HERE
Dim i As Long
For i = 18 To 21
Sheet24.Range("C" & i & ":E" & i).Value = Sheet24.Range("C" & i + 1 & ":E" & i + 1).Value <---SLOW HERE
Next
Sheet24.Range("C22:E22").Value = "" <---SLOW HERE
Call LockSettingsWorksheet
End Sub
用'Application.Calculation = xlCalculationManual'尝试 - 是否有公式的的一大堆在其余工作表或工作簿?如果是这样,在默认情况下每次更改值后,Excel将计算所有内容,在更改单元值的每行代码之后确实是一个巨大的开销。 –
@RikSportel就是这样,没有公式附加到这些价值分配。它只是把一个值放在一个单元格中。我在其中涉及公式的工作簿的其他区域使用'xlCalculationManual',但即使这些分配在禁用自动计算时也很慢。 – LazyBear
您是否在完整代码执行过程中监视了任务管理器中的应用程序? CPU使用率和更重要的内存使用情况? 根据发布的代码,它不应该花时间去这些小的更新。 –