由于内存使用过多,我正在努力使用无法达到目标的宏。
我有一个特定的行似乎对此负责:
Selection.Insert Shift:= xlToRight
这是在while循环和if / else语句中,如下所示:
While SearchRow < lastRow
If StrComp(...) = 0 Then
...
End If
If StrComp(...) = 0 Then
...
End If
If StrComp(...) = 0 _
Or StrComp(...) = 0 _
Or StrComp(...) = 0 Then
ActiveSheet.Cells(SearchRow, 1).EntireRow.Delete
Else
ThisWorkbook.Sheets(...).Cells(SearchRow, 1).Select
Selection.Insert Shift:=xlToRight
End If
Wend
我在调试lineby行中运行了宏,所以当我进入If / Or块然后到EndIf时,我看到Windows跳转的任务管理器中的内存使用情况。
你对此有任何解释/建议吗?
非常感谢你的帮助。 BR, 马西莫
答案 0 :(得分:1)
在我找到一个优雅的解决方案之前,我会开始优化宏来刷新公式和屏幕:
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
完成使用后,请不要忘记将它们恢复为原始值。
这样可以防止在插入过程中重新计算,并防止屏幕不必要地自行更新。这可能会立即解决您的问题。
现在,为了获得一个优雅的解决方案,我们需要查看您的整个代码并查看您正在努力实现的目标,因为很可能您正在使用数据和公式移动很多列,因此Excel必须在内存中处理很多以移动它们在右边。
我可能会看到你的代码: