暂停VBA循环,直到重新计算工作表

时间:2016-08-17 13:28:30

标签: excel vba excel-vba loops refresh

我搜索谷歌直到第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 

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

使用do while,如果没用。对于IF,代码将评估一次,然后继续前进。 Do While ...将保持循环直到条件满足。

Do
DoEvents
Loop While Not Application.CalculationState = xlDone