VBAでピポットテーブルの各要素にアクセス + フィルターにより消えたラベルにアクセスすることにより発生するエラー回避方法

##### コード
```vb:ピポットテーブル作成 + 各要素アクセス + フィルターで絞って各要素アクセス
Option Explicit

Sub myPivotSub()
 
    Dim wsPivot As Worksheet
    
    Dim lastRow As Long
    Dim lastColumn As Long
    
    Dim pivotName As String
    
    Dim i As Long
    Dim j As Long
    
    Set wsPivot = ThisWorkbook.Worksheets("Pivot")
    
    ' ピポットテーブルを削除
    wsPivot.Range("A9:J20").Clear
    
    lastRow = wsPivot.Cells(wsPivot.Rows.Count, "A").End(xlUp).Row
    lastColumn = wsPivot.Cells(1, wsPivot.Columns.Count).End(xlToLeft).Column
    pivotName = "myPivot"
    
   ThisWorkbook.PivotCaches.Create(xlDatabase, wsPivot.Range(wsPivot.Cells(1, "A"), wsPivot.Cells(lastRow, lastColumn))).CreatePivotTable wsPivot.Range("A11"), pivotName

   With wsPivot.PivotTables(pivotName).PivotFields("ひらがな")
           .Orientation = xlRowField
           .Position = 1
   End With
       
   With wsPivot.PivotTables(pivotName).PivotFields("カタカナ")
           .Orientation = xlColumnField
           .Position = 1
    End With
       
    With wsPivot.PivotTables(pivotName).PivotFields("種類")
           .Orientation = xlPageField
           .Position = 1
    End With
    
    wsPivot.PivotTables(pivotName).AddDataField wsPivot.PivotTables(pivotName).PivotFields("個数"), "合計 / 個数", xlSum
    
    With wsPivot.PivotTables(pivotName)
       
        For i = 1 To .PivotFields("ひらがな").PivotItems.Count
        
            For j = 1 To .PivotFields("カタカナ").PivotItems.Count
            
                Debug.Print "「ひらがな カタカナ 個数」 " & .PivotFields("ひらがな").PivotItems(i) & " " & .PivotFields("カタカナ").PivotItems(j) & " " & _
                                     .GetPivotData("合計 / 個数", "ひらがな", .PivotFields("ひらがな").PivotItems(i), "カタカナ", .PivotFields("カタカナ").PivotItems(j)).Value
               
            Next j
            
        Next i
    
    End With
    
'    With wsPivot.PivotTables(pivotName)
'
'        With .PivotFields("種類")
'              .ClearAllFilters
'              .CurrentPage = "A"
'        End With
'
'        For i = 1 To .PivotFields("ひらがな").PivotItems.Count
'
'            For j = 1 To .PivotFields("カタカナ").PivotItems.Count
'
'On Error GoTo ErrorHandler '種類フィルターをAに絞った後、"い"や"う"がピポットテーブルに含まれないのに参照しようとしてエラーが発生するのを無視するため
'
'                  Debug.Print "「ひらがな カタカナ 個数」 " & .PivotFields("ひらがな").PivotItems(i) & " " & .PivotFields("カタカナ").PivotItems(j) & " " & _
'                                     .GetPivotData("合計 / 個数", "ひらがな", .PivotFields("ひらがな").PivotItems(i), "カタカナ", .PivotFields("カタカナ").PivotItems(j)).Value
'
'ErrorHandler:
''Debug.Print "Error: " & Err.Description
'Resume Next
'
'            Next j
'
'        Next i
'
'    End With

End Sub
```
##### 実行結果
```
「ひらがな カタカナ 個数」 あ ア 5
「ひらがな カタカナ 個数」 あ イ 6
「ひらがな カタカナ 個数」 あ ウ 3
「ひらがな カタカナ 個数」 い ア 6
「ひらがな カタカナ 個数」 い イ 
「ひらがな カタカナ 個数」 い ウ 
「ひらがな カタカナ 個数」 う ア 
「ひらがな カタカナ 個数」 う イ 
「ひらがな カタカナ 個数」 う ウ 3
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104697/9591b104-1a09-4d6a-ab5a-4b66eb246122.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104697/7805c4c6-9201-44f0-9d3c-1a0fe0a98162.png)

##### コード(フィルターで絞る箇所 + 各要素にアクセスする両箇所のコメント化を解除)
```vb:ピポットテーブル作成 + 各要素アクセス + フィルターで絞って各要素アクセス
Option Explicit

Sub myPivotSub()
 
    Dim wsPivot As Worksheet
    
    Dim lastRow As Long
    Dim lastColumn As Long
    
    Dim pivotName As String
    
    Dim i As Long
    Dim j As Long
    
    Set wsPivot = ThisWorkbook.Worksheets("Pivot")
    
    ' ピポットテーブルを削除
    wsPivot.Range("A9:J20").Clear
    
    lastRow = wsPivot.Cells(wsPivot.Rows.Count, "A").End(xlUp).Row
    lastColumn = wsPivot.Cells(1, wsPivot.Columns.Count).End(xlToLeft).Column
    pivotName = "myPivot"
    
   ThisWorkbook.PivotCaches.Create(xlDatabase, wsPivot.Range(wsPivot.Cells(1, "A"), wsPivot.Cells(lastRow, lastColumn))).CreatePivotTable wsPivot.Range("A11"), pivotName

   With wsPivot.PivotTables(pivotName).PivotFields("ひらがな")
           .Orientation = xlRowField
           .Position = 1
   End With
       
   With wsPivot.PivotTables(pivotName).PivotFields("カタカナ")
           .Orientation = xlColumnField
           .Position = 1
    End With
       
    With wsPivot.PivotTables(pivotName).PivotFields("種類")
           .Orientation = xlPageField
           .Position = 1
    End With
    
    wsPivot.PivotTables(pivotName).AddDataField wsPivot.PivotTables(pivotName).PivotFields("個数"), "合計 / 個数", xlSum
    
    With wsPivot.PivotTables(pivotName)
       
        For i = 1 To .PivotFields("ひらがな").PivotItems.Count
        
            For j = 1 To .PivotFields("カタカナ").PivotItems.Count
            
                Debug.Print "「ひらがな カタカナ 個数」 " & .PivotFields("ひらがな").PivotItems(i) & " " & .PivotFields("カタカナ").PivotItems(j) & " " & _
                                     .GetPivotData("合計 / 個数", "ひらがな", .PivotFields("ひらがな").PivotItems(i), "カタカナ", .PivotFields("カタカナ").PivotItems(j)).Value
               
            Next j
            
        Next i
    
    End With
    
    With wsPivot.PivotTables(pivotName)

        With .PivotFields("種類")
              .ClearAllFilters
              .CurrentPage = "A"
        End With

        For i = 1 To .PivotFields("ひらがな").PivotItems.Count

            For j = 1 To .PivotFields("カタカナ").PivotItems.Count

'On Error GoTo ErrorHandler '種類フィルターをAに絞った後、"い"や"う"がピポットテーブルに含まれないのに参照しようとしてエラーが発生するのを無視するため

                  Debug.Print "「ひらがな カタカナ 個数」 " & .PivotFields("ひらがな").PivotItems(i) & " " & .PivotFields("カタカナ").PivotItems(j) & " " & _
                                     .GetPivotData("合計 / 個数", "ひらがな", .PivotFields("ひらがな").PivotItems(i), "カタカナ", .PivotFields("カタカナ").PivotItems(j)).Value

'ErrorHandler:
'Debug.Print "Error: " & Err.Description
'Resume Next

            Next j

        Next i

    End With

End Sub
```

##### 実行結果
```
「ひらがな カタカナ 個数」 あ ア 5
「ひらがな カタカナ 個数」 あ イ 6
「ひらがな カタカナ 個数」 あ ウ 3
「ひらがな カタカナ 個数」 い ア 6
「ひらがな カタカナ 個数」 い イ 
「ひらがな カタカナ 個数」 い ウ 
「ひらがな カタカナ 個数」 う ア 
「ひらがな カタカナ 個数」 う イ 
「ひらがな カタカナ 個数」 う ウ 3
「ひらがな カタカナ 個数」 あ ア 5
「ひらがな カタカナ 個数」 あ イ 6
「ひらがな カタカナ 個数」 あ ウ 3
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104697/28bf6d1b-de74-4d34-a5dc-df2f33da7f78.png)

##### コード(ErrorHandler箇所のコメント化を解除)
```vb:ピポットテーブル作成 + 各要素アクセス + フィルターで絞って各要素アクセス
Option Explicit

Sub myPivotSub()
 
    Dim wsPivot As Worksheet
    
    Dim lastRow As Long
    Dim lastColumn As Long
    
    Dim pivotName As String
    
    Dim i As Long
    Dim j As Long
    
    Set wsPivot = ThisWorkbook.Worksheets("Pivot")
    
    ' ピポットテーブルを削除
    wsPivot.Range("A9:J20").Clear
    
    lastRow = wsPivot.Cells(wsPivot.Rows.Count, "A").End(xlUp).Row
    lastColumn = wsPivot.Cells(1, wsPivot.Columns.Count).End(xlToLeft).Column
    pivotName = "myPivot"
    
   ThisWorkbook.PivotCaches.Create(xlDatabase, wsPivot.Range(wsPivot.Cells(1, "A"), wsPivot.Cells(lastRow, lastColumn))).CreatePivotTable wsPivot.Range("A11"), pivotName

   With wsPivot.PivotTables(pivotName).PivotFields("ひらがな")
           .Orientation = xlRowField
           .Position = 1
   End With
       
   With wsPivot.PivotTables(pivotName).PivotFields("カタカナ")
           .Orientation = xlColumnField
           .Position = 1
    End With
       
    With wsPivot.PivotTables(pivotName).PivotFields("種類")
           .Orientation = xlPageField
           .Position = 1
    End With
    
    wsPivot.PivotTables(pivotName).AddDataField wsPivot.PivotTables(pivotName).PivotFields("個数"), "合計 / 個数", xlSum
    
    With wsPivot.PivotTables(pivotName)
       
        For i = 1 To .PivotFields("ひらがな").PivotItems.Count
        
            For j = 1 To .PivotFields("カタカナ").PivotItems.Count
            
                Debug.Print "「ひらがな カタカナ 個数」 " & .PivotFields("ひらがな").PivotItems(i) & " " & .PivotFields("カタカナ").PivotItems(j) & " " & _
                                     .GetPivotData("合計 / 個数", "ひらがな", .PivotFields("ひらがな").PivotItems(i), "カタカナ", .PivotFields("カタカナ").PivotItems(j)).Value
               
            Next j
            
        Next i
    
    End With
    
    With wsPivot.PivotTables(pivotName)

        With .PivotFields("種類")
              .ClearAllFilters
              .CurrentPage = "A"
        End With

        For i = 1 To .PivotFields("ひらがな").PivotItems.Count

            For j = 1 To .PivotFields("カタカナ").PivotItems.Count

On Error GoTo ErrorHandler '種類フィルターをAに絞った後、"い"や"う"がピポットテーブルに含まれないのに参照しようとしてエラーが発生するのを無視するため

                  Debug.Print "「ひらがな カタカナ 個数」 " & .PivotFields("ひらがな").PivotItems(i) & " " & .PivotFields("カタカナ").PivotItems(j) & " " & _
                                     .GetPivotData("合計 / 個数", "ひらがな", .PivotFields("ひらがな").PivotItems(i), "カタカナ", .PivotFields("カタカナ").PivotItems(j)).Value

ErrorHandler:
'Debug.Print "Error: " & Err.Description
Resume Next

            Next j

        Next i

    End With

End Sub
```
##### 実行結果(先ほど発生したエラーは発生しない)
```
「ひらがな カタカナ 個数」 あ ア 5
「ひらがな カタカナ 個数」 あ イ 6
「ひらがな カタカナ 個数」 あ ウ 3
「ひらがな カタカナ 個数」 い ア 6
「ひらがな カタカナ 個数」 い イ 
「ひらがな カタカナ 個数」 い ウ 
「ひらがな カタカナ 個数」 う ア 
「ひらがな カタカナ 個数」 う イ 
「ひらがな カタカナ 個数」 う ウ 3
「ひらがな カタカナ 個数」 あ ア 5
「ひらがな カタカナ 個数」 あ イ 6
「ひらがな カタカナ 個数」 あ ウ 3
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104697/e0a15096-62a1-4773-97ae-20dda8f17e5f.png)