0
我在我的腳本格式化單元格(主要取決於單元格的值主要是內部顏色)和排序行與這些單元格的值結束。排序和格式化的執行速度過快? (VBA)
- 如果我以中斷模式運行整個腳本(一次一行),它將完美地執行該過程。
- 但是,當我從頭到尾運行整個腳本而不暫停格式化並且排序不會發生時。
- 我有兩個子程序,一個用於格式化和一個用於排序。如果我在執行整個代碼之後再單獨運行這些代碼,他們就會執行它們應該執行的操作。
我能想到的唯一原因是代碼執行速度太快,因爲剩餘的內存量和一些命令被覆蓋。但我只是VBA新手,所以如果我錯了,請賜教。
我試過激活ScreenUpdating
,並且試圖在代碼的相關部分之前和之後放置DoEvents
。
你如何處理過快的代碼執行?除了DoEvents
以外,還有其他方法可以釋放VBA代碼中的內存嗎?
我使用DoEvents
的方法是將OpenForm = DoEvents
上線,我認爲本地隊列可能需要使用IF語句和Mod
內部for循環處理,或一起。
我排序的代碼如下所示(可變WS是在工作表):
'Sort rows
With ws.Range("AE2").CurrentRegion
On Error Resume Next
.Sort.SortFields.Clear
On Error GoTo 0
.Cells.Sort Key1:=Range(ws.Cells(2, 33), ws.Cells(LastRow, 33)), Order1:=xlDescending, Orientation:=xlTopToBottom, Header:=xlYes
End With
我格式化代碼太長,可能不相關。但它基本上由If語句和內部着色組成,例如。
If AbsVal < 3 And AbsVal >= 1 Then DiffCell.Interior.Color = vbRed