Home » エクセルマクロ・Excel VBAの使い方 » ピボットテーブル » VBAでピボットテーブルを選択する・アクティブにする

VBAでピボットテーブルを選択する・アクティブにする

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

VBAでピボットテーブルを選択する・アクティブにする

「excel vba ピボットテーブルを選択する」
「エクセルvba ピボットテーブルをアクティブにする」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

Excel VBA(Visual Basic for Applications)で、ピボットテーブルを選択するには・アクティブにするには、どのようなコードを書けばいいのかを探している方による検索です。

[スポンサードリンク]

ピボットテーブルを選択するサンプルマクロ

以下のようなマクロで、アクティブなシートの一つ目のピボットテーブルを選択することができます。

Sub ピボットテーブルを選択する()

 On Error GoTo ERR_HNDL
 ActiveSheet.PivotTables(1).TableRange1.Select
 Exit Sub

ERR_HNDL:
 MsgBox "アクティブなシートに、ピボットテーブルは存在しません。"

End Sub

サンプルマクロの解説

選択を行っているのは、
  ActiveSheet.PivotTables(1).TableRange1.Select
の1行だけなのですが、ピボットテーブルが存在していないシートでこのコードを実行した場合には、実行時エラーが発生してしまうため、
  On Error GoTo ERR_HNDL
 ERR_HNDL:
  MsgBox "アクティブなシートに、ピボットテーブルは存在しません。"
というエラー処理を入れています。

選択を行っている「ActiveSheet.PivotTables(1).TableRange1.Select」というオブジェクト式の意味は、以下のとおりです。

Worksheet.PivotTablesメソッドの、

VBAでピボットテーブルを選択する・アクティブにする

引数に「1」を指定することで、一つ目のピボットテーブルを表すPivotTableオブジェクトを取得して、PivotTable.TableRange1プロパティで、

VBAでピボットテーブルを選択する・アクティブにする

ピボットテーブル全体を表すRangeオブジェクトを取得して、Range.Selectメソッドで選択を行っています。

VBAでピボットテーブルを選択する・アクティブにする

アクティブでないシートのピボットテーブルを直接は選択できない

ちなみに、上記マクロの、
  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

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » ピボットテーブル » VBAでピボットテーブルを選択する・アクティブにする

「ピボットテーブル」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.