Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » グラフシートがアクティブなときActiveSheet.Typeは何を返すのか

グラフシートがアクティブなときActiveSheet.Typeは何を返すのか

対象:Excel2007, Excel2010, Excel2013

アクティブなシートを判別するVBA(Visual Basic for Applications)のコードをご紹介しました。

その記事の中で、ActiveSheet.Typeというコードは、ワークシートがアクティブなときには、列挙型XlSheetTypeに定義されている定数・xlWorksheetと同じ値「-4167」を返すけれど、

グラフシートがアクティブなときActiveSheet.Typeは何を返すのか

グラフシートがアクティブなときには「3」とか「4」とかの数値を返すことに触れました。

これらの数値が何なのかについて解説しておきます。

[スポンサードリンク]

WorksheetがアクティブなときにActiveSheet.Typeで返される値

まずは、ActiveSheetプロパティが返すものから、オブジェクトブラウザーで確認しましょう。

ActiveSheetプロパティは、アクティブになっている(シート)オブジェクトを返してきます。

グラフシートがアクティブなときActiveSheet.Typeは何を返すのか

ワークシートがアクティブならWorkSheetオブジェクト、

グラフシートがアクティブなときActiveSheet.Typeは何を返すのか

グラフシートがアクティブならChartオブジェクトを返します。

グラフシートがアクティブなときActiveSheet.Typeは何を返すのか

ワークシートがアクティブなときに、ActiveSheetプロパティでWorkSheetオブジェクトが返されるということは、ActiveSheet.TypeはWorksheet.Typeと同じことになります。

グラフシートがアクティブなときActiveSheet.Typeは何を返すのか

ですからActiveSheet.Typeというコードで、ワークシートかそうでないかの判定はできます。

ChartがアクティブなときにActiveSheet.Typeで返される値

グラフシートがアクティブなときにも、ワークシートのときと同じ理屈で、ActiveSheet.TypeはChart.Typeと同じはずです。

しかし、オブジェクトブラウザーで確認しても、Chartオブジェクトには、Typeプロパティが見当たりません!

グラフシートがアクティブなときActiveSheet.Typeは何を返すのか

一体、ChartがアクティブなときにActiveSheet.Typeは何を返してきているのでしょうか?

オブジェクトブラウザーで、非表示のメンバーを表示させて見ると、何が返されるのかがわかってきます。

グラフシートがアクティブなときActiveSheet.Typeは何を返すのか

Chart.Typeプロパティは、非表示のプロパティなのです。

グラフシートがアクティブなときActiveSheet.Typeは何を返すのか

そして、その戻りはLongとなっています。(Worksheet.Typeの戻りはXlSheetTypeでした。)

グラフシートがアクティブなときActiveSheet.Typeは何を返すのか

つまり、Chartがアクティブなときには、ActiveSheet.TypeはLong型のChart.Typeを返すということです。

Chart.Typeの返す値とは

オブジェクトブラウザーを眺めているだけでは、Chart.Typeが返す値が何なのかは具体的にはわかりませんが、いろいろとテストしてみるとChart.Typeプロパティの返す値がわかってきます。

Chart.Typeは、
 面グラフがアクティブなら定数・xlAreaと同じ「1」
 折れ線グラフがアクティブなら定数・xlLineと同じ「4」
 円グラフがアクティブなら定数・xlPieと同じ「5」
を返してきます。

Chart.Typeプロパティは、
Chart.ChartTypeプロパティと近い値を返してくることが結構あるのです。

グラフシートがアクティブなときActiveSheet.Typeは何を返すのか

しかし、完全一致しているわけではありません。

顕著なのが棒グラフの場合です。
Chart.Typeは、棒グラフがアクティブなら「3」を返してきます。
Chart.ChartTypeは、棒グラフの種類によって「51」「52」「53」といった値を返してきます。

Chart.ChartTypeプロパティが返す列挙型・XlChartTypeには、値が「3」の定数は、最近のバージョンでは存在していません。ここは推測に過ぎませんが、どこかのバージョンまではxlColumnといった名前の値が「3」の定数が存在していたのではないかと考えています。

つまり、Chart.Typeプロパティは、古いバージョンでグラフの種類を指定するために使われていたプロパティで、互換性を確保するために隠しプロパティとして最近のバージョンでも残されているのではないかと、私は推測しています。

グラフシートがアクティブなときのActiveSheet.Typeは何なのか

で、結論です。

グラフシートがアクティブなときにActiveSheet.Typeが返す値は、グラフの種類を表すような値ということです。

ただし、正しくグラフの種類を表す値を返すActiveSheet.ChartType(Chart.ChartType)とは違う値が返されるケースも結構あります。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » グラフシートがアクティブなときActiveSheet.Typeは何を返すのか

TrackBack:0

TrackBack URL
[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » グラフシートがアクティブなときActiveSheet.Typeは何を返すのか

「グラフ・Chart」の記事一覧

検索


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

.