「excel vba ピボットテーブルを選択する」
「エクセルvba ピボットテーブルをアクティブにする」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
Excel VBA(Visual Basic for Applications)で、ピボットテーブルを選択するには・アクティブにするには、どのようなコードを書けばいいのかを探している方による検索です。
ピボットテーブルを選択するサンプルマクロ
以下のようなマクロで、アクティブなシートの一つ目のピボットテーブルを選択することができます。
On Error GoTo ERR_HNDL
ActiveSheet.PivotTables(1).TableRange1.Select
Exit Sub
ERR_HNDL:
MsgBox "アクティブなシートに、ピボットテーブルは存在しません。"
サンプルマクロの解説
選択を行っているのは、
ActiveSheet.PivotTables(1).TableRange1.Select
の1行だけなのですが、ピボットテーブルが存在していないシートでこのコードを実行した場合には、実行時エラーが発生してしまうため、
On Error GoTo ERR_HNDL
ERR_HNDL:
MsgBox "アクティブなシートに、ピボットテーブルは存在しません。"
というエラー処理を入れています。
選択を行っている「ActiveSheet.PivotTables(1).TableRange1.Select」というオブジェクト式の意味は、以下のとおりです。
Worksheet.PivotTablesメソッドの、
引数に「1」を指定することで、一つ目のピボットテーブルを表すPivotTableオブジェクトを取得して、PivotTable.TableRange1プロパティで、
ピボットテーブル全体を表すRangeオブジェクトを取得して、Range.Selectメソッドで選択を行っています。
アクティブでないシートのピボットテーブルを直接は選択できない
ちなみに、上記マクロの、
ActiveSheet.PivotTables(1).TableRange1.Select
というオブジェクト式がわかると、一番左のワークシート上に存在するピボットテーブルを選択するために、
Sheets(1).PivotTables(1).TableRange1.Select
というコードを思いつく方がいらっしゃるかもしれませんが、これはダメです。
一番左のシートがアクティブではない状態で、
Sheets(1).Range("A1").Select
を実行すると、実行時エラーが発生するのと同じ理由でエラーとなります。
こういう仕様を見るとExcel VBAは、基本的には表計算ソフト・Excelを便利にするためのものなのだなぁ、と思います。
以下のように、まず一番左のシートを選択しておいてから、ピボットテーブルを選択してください。
Sheets(1).Select
ActiveSheet.PivotTables(1).TableRange1.Select
- Newer:Findの検索条件・Whatにセルの値を指定するには
- Older:VBAでグラフシートの有無を判定する
Home » エクセルマクロ・Excel VBAの使い方 » ピボットテーブル » VBAでピボットテーブルを選択する・アクティブにする