質問: 3 For Each person In ActiveSheet.PivotTables(fy).PivotFields("氏名").PivotItems If Not memberDic("酒井チーム").Exists(person.Name) Then //非表示にする End If Next person ``` このコードが動作しません。 やりたいこととしては、作成したピボットテーブルの「行ラベル」の列に表示されたもののうち、memberDic("酒井チーム")のキーであるもの以外を非表示にしたいです。 PivotItemsオブジェクトの.Nameはstring型みたいですし、Existsメソッドで普通に比較できると思ったのですが... アドバイス頂けたら幸いです。
回答: 多分、Scripting.Dictionary を使ってますね? Scripting.Dictionary は VBA からも使えますが、VBA の機能ではありません。 明記または、コードにインスタンス生成行を入れることをお勧めします。 Scripting.Dictionaryなら、こんな感じで入れ子のDictionaryを作ってください。 ``` Public Sub test() Dim memberDic1 As Object Set memberDic1 = CreateObject("Scripting.Dictionary") Dim teamDic As Object Set teamDic = CreateObject("Scripting.Dictionary") teamDic.Add "酒井チーム", memberDic1 With teamDic("酒井チーム") .Add "Aさん", 1 .Add "Bさん", 2 .Add "Cさん", 3 End With If teamDic("酒井チーム").Exists("Bさん") Then MsgBox "あり" End If End Sub ``` memberDicはチーム数分必要です。 ピボットの部分は見てません。