我搜索谷歌直到第10页,但找不到解决方案。 我在VBA中有一个循环,但希望它在继续之前等待,直到重新计算工作表。 大多数人建议使用DoEvents。但是,这对我不起作用。
到目前为止,这是我的代码,它不会等到计算工作表:
Sub Replaceifrebalance()
Dim x As Integer
NumRows = Range("CF16", Range("CF16").End(xlDown)).Rows.Count
Range("CF16").Select
For x = 1 To NumRows
If Range("CF" & x).Value > 0 Then
Range("AW15:BF15").Select
Application.CutCopyMode = False
Selection.Copy
Range("AW1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("AW" & 1 & ":BF" & 1).Copy Worksheets("Timeseries").Range("BI" & x & ":BR" & x)
Application.Calculate
If Not Application.CalculationState = xlDone Then
DoEvents
End If
End If
Next
End Sub
现在有没有人提供与此不同的解决方案?:
Application.Calculate
If Not Application.CalculationState = xlDone Then
DoEvents
End If
非常感谢任何帮助。
答案 0 :(得分:3)
使用do while,如果没用。对于IF
,代码将评估一次,然后继续前进。 Do While ...将保持循环直到条件满足。
Do
DoEvents
Loop While Not Application.CalculationState = xlDone