💻
ExcelVBAでピボットテーブルのフィルタ(Fields)の存在を確認する
VBAでピボットテーブルのフィルタ(Fields)存在を確認するには
ユーザーがピボットテーブルのフィルタ自体をいじっているかもしれません。
自分の想定しているだけのフィルタがピボット内に健在か確認するコードです。
見えてるフィルタ項目.VisibleFields
Dim searchSheet As Worksheet
Set searchSheet = ActiveWorkbook.Worksheets("シート名")
Dim i, cntVisibleFields As Integer
Dim hasFields AS Boolean
hasFields = False
Dim searchFieldsName as String
searchFieldsName = "売上"
With searchSheet.PivotTables("ピボットテーブル名")
'見えているフィルタの数を取得
cntVisibleFields = .VisibleFields.Count
For i = 1 To cntVisibleFields
If searchFieldsName = .VisibleFields(i) Then
hasFields = True
Exit For
End If
Next
End With
If hasFields Then
MsgBox "ピボットテーブルに売上のフィルタは設定されています"
Else
MsgBox "ピボットテーブルに売上のフィルタは設定されていません"
End If
VBAピボットテーブルのフィルタ(Fields)の存在を確かめるためのFunctionプロシージャ
'Fieldsの存在を確認する。戻り値Boolean
'引数1:シート名
'引数2:ピボットテーブル名
'引数3:フィールド名(シート状に存在する)
Private Function F_SearchVisibleFields(ByVal arg_searchSheetName As String, arg_searchPivotName As String, ByVal arg_searchVisibleFieldsName As String) As Boolean
Dim searchSheet As Worksheet
Set searchSheet = ActiveWorkbook.Worksheets(arg_searchSheetName)
Dim i, cntVisibleFields As Integer
With searchSheet.PivotTables(arg_searchPivotName)
cntVisibleFields = .VisibleFields.Count
For i = 1 To cntVisibleFields
If arg_searchVisibleFieldsName = .VisibleFields(i) Then
F_SearchVisibleFields = True
Exit Function
End If
Next
End With
F_SearchVisibleFields = False
End Function
Discussion