今天早上我上班,開始從昨天離開的同一個文件開始工作。現在,只要宏將值賦給單元格或清除它們,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使用率和更重要的內存使用情況? 根據發佈的代碼,它不應該花時間去這些小的更新。 –