Application.ScreenUpdating = False
Dim r As Range
Dim a As Long
Set op = Worksheets("ZVCTOSTATUS")
Set CP = op.Columns("J")
Set CTO = op.Range("J1")
Set OD = op.Columns("G")
Set ZV = op.Columns("H")
op.Activate
fa = op.Range("J" & Rows.Count).End(xlUp).Row
Set r = op.Range("J2:J" & fa)
For Each C In r
CTO = CP.Cells(C.Row, 1).Value
If CTO = "FG BOOKED" Or CTO = "CLOSED" Then
ZV.Cells(C.Row, 1) = 0
ElseIf CTO = "NOT STARTED" Or CTO = "UNCONFIRMED" Then
ZV.Cells(C.Row, 1) = OD.Cells(C.Row, 1).Value
End If
Next C
嗨,大家好,我使用這個代碼要經過我的工作做一個for循環引用列J.Excel的VBA For循環導致100%的CPU
當此代碼更改列H值在獨立的工作表上使用它似乎工作得很好,但是一旦我將它移植到一個更大的文件中,這個文件有數據連接,並且我單獨運行這個宏,它會導致我的CPU以100%的速度運行並且最多需要10分鐘。
有誰知道爲什麼會發生這種情況?
多少個內核沒有你的機器有哪些? VBA運行在一個單線程的公寓。 – Bathsheba
'CTO'是一個對象嗎?如果是這樣,什麼類型?你正在做一個'Set CTO = op.Range(「J1」)'以及'CTO = CP.Cells(C.Row,1).Value',這看起來很奇怪。 – YowE3K
CPU規格:Intel Core i5-6300U @ 2。40 Ghz RAM 8GB –