Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » データラベル関連のオブジェクトモデルをどうやって調べたのか

データラベル関連のオブジェクトモデルをどうやって調べたのか

対象:Excel 2010, Excel 2013, Windows版Excel 2016

グラフのデータラベルに系列名を表示するExcelマクロをご紹介しました。

ここで重要なのは、
  Chartオブジェクト
  └ FullSeriesCollectionコレクションオブジェクト
    └ Seriesオブジェクト
      └ DataLabelsコレクションオブジェクト
        └ ShowSeriesNameプロパティ
というオブジェクトの階層関係を、どうやって調べたか、です。

[スポンサードリンク]

データラベル関連のオブジェクトモデルを調べる概要

私は以下の手順で、データラベル関連のオブジェクトについて調べました。

マクロ記録
 ↓
オブジェクトブラウザーで確認
 ↓
ローカルウィンドウで確認

マクロ記録でできたSubプロシージャ

データラベルを表示して、系列名を表示する操作をマクロ記録すると、以下のSubプロシージャが作られます。


Sub マクロ記録_データラベルに系列名を表示する操作()
 ActiveChart.ApplyDataLabels
 ActiveChart.FullSeriesCollection(1).DataLabels.Select
 Selection.ShowSeriesName = True
End Sub

FullSeriesCollectionについて調べる

マクロ記録でできたコードで、データラベルを選択している部分の、
  ActiveChart.FullSeriesCollection (1).DataLabels.Select

Chart.FullSeriesCollectionメソッドを、オブジェクトブラウザーで確認すると、下図のとおり戻りは「As Object」と定義されています。

データラベル関連のオブジェクトモデルをどう調べたか

やむを得ないので「FullSeriesCollection」を検索してみると, FullSeriesCollectionコレクションオブジェクトが存在していて、その単独のオブジェクトはSeriesオブジェクトであることがわかります。

データラベル関連のオブジェクトモデルをどう調べたか

さすがに同じ名前ですから、Chart.FullSeriesCollectionメソッドが、FullSeriesCollectionコレクションオブジェクトを返すのだと考えられますが、念のため、オブジェクト変数とローカルウィンドウで確認します。

以下のSubプロシージャを作成してステップ実行してみます。


Sub データラベル関連の戻りを確認する()
 Dim obj
 With ActiveChart
  .ApplyDataLabels
  Set obj = .FullSeriesCollection
 End With
End Sub

変数objにChart.FullSeriesCollectionメソッドの戻りがセットされた状態を確認すると、

データラベル関連のオブジェクトモデルをどう調べたか

Seriesオブジェクトを単独のオブジェクトとして持つ、FullSeriesCollectionコレクションオブジェクトであることなどを確認できます。

DataLabelsについて調べる

マクロ記録でできたコードで、データラベルを選択している部分が、
  ActiveChart.FullSeriesCollection(1).DataLabels.Select

となっていたので、Series.Datalabelsメソッドをオブジェクトブラウザーで確認すると、下図のとおり戻りが、またしても「As Object」です。

データラベル関連のオブジェクトモデルをどう調べたか

「DataLabels」を検索すると、DataLabelsコレクションオブジェクトが存在していることがわかり、マクロ記録で系列名を表示していた、
  Selection.ShowSeriesName = True
ShowSeriesNameプロパティが存在していることも確認できました。

データラベル関連のオブジェクトモデルをどう調べたか

さきほどのFullSeriesCollectionの場合と同様に、Datalabelsについてもオブジェクト変数とローカルウィンドウで確認します。

先ほどの確認用のSubプロシージャを以下のように編集してから、再度ステップ実行してみます。


Sub データラベル関連の戻りを確認する()
 Dim obj, obj2
 With ActiveChart
  .ApplyDataLabels
  Set obj = .FullSeriesCollection
  Set obj2 = obj.Item(1).DataLabels
 End With
End Sub

すると、下図のようにShowSeriesNameプロパティを確認できました。

データラベル関連のオブジェクトモデルをどう調べたか

以上の手順で、データラベルの系列名関連オブジェクトの階層関係を理解してから、先日ご紹介したExcelマクロを作成したというわけです。

Chart.FullSeriesCollectionメソッドや、Series.Datalabelsメソッドが「As Object」でなければ、もう少し気楽に作れたはずなのに...Microsoftめ、という思いは残ります。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » データラベル関連のオブジェクトモデルをどうやって調べたのか

TrackBack:0

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

Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » データラベル関連のオブジェクトモデルをどうやって調べたのか

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

検索


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

.