0
を使用してピボットテーブルからpivotItemsの選択を解除する速度を上げます。次のコードでは、ワイルドカード "*"を使用して "xyznames"で始まるPivotItemを選択解除します。それは動作しますが、非常に遅いです。任意のアイデアは同じことを行うが、より速い?ワイルドカード*
Sub UncheckxyzName()
'Purpose: Uncheck "xyzname* from Pivot tables from "Comparison" tab
Dim pt As PivotTable
Dim myPI As PivotItem
'stop Excel actions for speed enhancement
With Excel.Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = Excel.xlCalculationManual
.DisplayStatusBar = False
End With
'uncheck "xyzname*" from "Comparison" tab
With Worksheets("Comparison").PivotTables("PivotTable1").PivotFields("Type")
.PivotItems("fnBid").Visible = False
End With
With Worksheets("Comparison").PivotTables("PivotTable1").PivotFields("Resource Name")
For Each myPI In .PivotItems
myPI.Visible = True
Next myPI
For Each myPI In .PivotItems
If myPI.name Like "xyzname*" Then
myPI.Visible = False
Else
myPI.Visible = True
End If
Next myPI
End With
'Turn back on Excel actions
With Excel.Application
.DisplayStatusBar = True
.Calculation = Excel.xlCalculationAutomatic
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
関連のポストへ:
excel macro vba Filtering using wildcards
btw、いくつの 'PivotItems'がありますか? – avb
良いキャッチ、avb。そのコードを削除して再実行しました。それは少し速いですが、倍の速さではありません。あなたのアドバイスは確かに時間を短縮するのに役立ちました。 3つの異なるワークシート上で3つのピボットを介してコード全体がループしています。各ピボットには約368ピボットアイテム。 – XLmatters
これらのワイルドカード項目をループせずにチェックを外す別の方法があるのだろうか? – XLmatters