私は手動で作成されたピボットテーブルを持っています。ユーザーがレポートフィルタやスライサーでフィルタリングできないようにする必要がある方法がありますので、VBAを使用する方法を考えました。私はスケルトンのユーザフォームを作成しました。そして、その背後にあるコードを書くのは難しい段階です。VBAユーザーフォームを使用してピボットテーブルをフィルタリングする(特に、レポートフィルタとスライサーではできない方法で)
PivotFilters関数を使用しようとしていますが、これは機能しません。私はVBAの完全な初心者であることを認めます。それは私が作った単純なエラーかもしれません。あるいは、PivotFiltersは仕事の正しいツールではないでしょうか?次に例を示します。
'ok button - this is the big one, telling the button what to do with the selected options!
Private Sub CommandButton1_Click()
'targeting our familiar pivot table
Dim pvt As PivotTable
Set pvt = ActiveSheet.PivotTables("PivotTable1")
'Whether to filter out low sample size brands
Dim pvtFieldSasz As PivotField
Set pvtFieldSasz = pvt.PivotFields("SampleSize")
If OptionButton1 = True Then
pvt.pvtFieldSasz.PivotFilters.ClearAllFilters
pvt.pvtFieldSasz.PivotFilters.Add2 Type:=xlCaptionEquals, Value1:="Reliable Sample"
End If
End
上記の例はレポートフィルタまたはスライサーで行うことができますものですが、私はそれをワンストップにするために、ユーザーフォームに関連するすべてのオプションをつけたかったですユーザーのための-shop。
「実行時エラー '438':オブジェクトがプロパティまたはメソッドをサポートしていません」というエラーメッセージが表示されます。
私は基礎を習得したいので、まだ難しいものにはまだ移行していません。
フィルターは、ユーザーが選択したオプションに応じて、3つの別々の列のいずれかを参照します。ユーザーには3つのオプションボタンがあり、そのうちの1つだけを選択できます。彼らがOptionButton1を選択した場合、ピボットテーブルをフィールドX = 1でフィルタリングしたいと思います。OptionButton2を選択すると、フィールドY = 1でフィルタリングする必要があります。OptionButton3は、Field Z = 1に対応します。 Zは実際にピボットテーブルに行または列として表示されますが、ソースデータの一部であり、ピボットテーブルの背後の選択に含まれます。
このつまずきの初心者を手助けしてくれてありがとう - どのヒントにも非常に感謝しています!
エラーメッセージ –
私はあなたの問題を発見し、答えを書いていますが、将来、エラーメッセージが表示されている行に、エラーメッセージの内容を追加する必要があります。 – OpiesDad
良い点は、あります - ありがとう。 –