全て選択するにはループを用いる方法もあるが、
項目数が多い場合は処理速度が著しく遅くなる場合がある。
このため、Excel 2002以降で使用可能なフィールドリストの(全て選択する)を
sendkeysより実行することとする。
<サンプル>
Sub B_実行()
'Excel 2002(Application.Versionが10)より前はこの機能はないので実行しない
If Int(Application.Version) < 10 Then
Exit Sub
Else
Call フィールド全て表示("ピボットテーブル名", "フィールド名") 'ピボットテーブルの名前,フィールドの名前
End If
End Sub
Private Sub フィールド全て表示(PT As String, PF As String)
With ActiveSheet.PivotTables(PT).PivotFields(PF)
'非表示の時は実行しない
Select Case .Orientation
Case 0
Exit Sub
Case Else
End Select
'既にピボットフィールドを全て選択している場合は実行しない
If .PivotItems.Count = .VisibleItems.Count Then
Exit Sub
End If
'ラベルを選択する
.LabelRange.Select
'sendkeysを用いてピボットフォールドを設定する
'******動作結果を見て適宜sendkeyの入力方法を変えてみる方がよい******
'<<<全て選択する>>>
With Application
.SendKeys "%{DOWN}" 'Alt + ↓ でフィールドの一覧を表示する
.SendKeys "{UP}"
.SendKeys "% " 'Alt + space でチェックマークをつける
.SendKeys "{ENTER}"
.SendKeys "{TAB}"
.SendKeys " "
.SendKeys "{ENTER}"
End With
End With
End Sub