2017-12-14 19 views
0

現在、いくつかのコードを最適化しようとしています。現在、私はActiveWorkbook.RefreshAllを使用して実行時間全体を大幅に遅くしています。実際には、ワークブック内の2つのワークシートをリフレッシュするだけです。 Worksheet("Name").RefreshAllのような機能はありますか?私は.calculateを認識していますが、ピボットテーブルと指定されたシートの計算を更新するとは思われません。ワークシート( "名前")。リフレッシュ?

よろしく

+0

[ここ](https://stackoverflow.com/questions/154434/how-do-you-get-excel-to-refresh-data-on-sheet-from-within-vba) 。 –

答えて

1

ワークブックを通して、それらの特定のシートになぜループ、計算ピボットテーブルを更新しますか?テーブルが同じシート上にない場合は、コードを微調整してピボットテーブルをループし、「各シート」ループの代わりにその方法をリフレッシュすることができます。

複製可能な
Sub t() 
Dim ws As Worksheet 
Dim pvt As PivotTable 

For Each ws In ActiveWorkbook.Worksheets 
    If ws.Name = "Sheet4" Or ws.Name = "Sheet2" Then 
     ws.Calculate 
     For Each pvt In ws.PivotTables 
      pvt.RefreshTable 
     Next pvt 
    End If 
Next ws 

End Sub 
+0

確かにより効率的なルートですバットマンありがとう! –

関連する問題