2016-08-17 77 views
1

ページ10までgoogleを検索しましたが、解決策が見つかりませんでした。 VBAにループがありますが、シートが再計算されるまで処理を続行するまで待つ必要があります。 ほとんどの人がDoEventsを採用しています。しかし、それは私にとってはうまくいかない。ここでシートが再計算されるまでVBAループを一時停止します

は、シートが計算されるまで待機しない、これまでの私のコードです:

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 

はこの1よりも誰も今別のソリューションをい?:

Application.Calculate 
    If Not Application.CalculationState = xlDone Then 
     DoEvents 
    End If 

すべてのヘルプは大歓迎です。

答えて

3

do whileを使用すると、使用しない場合があります。 IFの場合、コードは一度評価され、次に前に進みます。 Do While ...条件が満たされるまでループします。

Do 
DoEvents 
Loop While Not Application.CalculationState = xlDone 
関連する問題