Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » ワークシート上の全グラフをFor Each~Nextループで処理するExcelマクロ

ワークシート上の全グラフをFor Each~Nextループで処理するExcelマクロ

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

「シート内のグラフ vba for each」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

いずれかのワークシート上に存在している全グラフに対して、For Each~Nextループを使って何らかの処理を行うにはどのようなコードを書けばいいのか探している方による検索です。

[スポンサードリンク]

ワークシート上のグラフをFor Each~Nextループで処理するサンプルマクロ

「シート内のグラフ vba for each」
という検索キーワードだけでは、For Each~Nextループの中で具体的に何をしたかったのかまではわかりませんので、参考になりそうな簡単なマクロをご紹介しておきます。


Sub アクティブシート上のグラフを順番に取得する()

 Dim cht As ChartObject

 For Each cht In ActiveSheet.ChartObjects
  cht.Select
  MsgBox cht.Name
 Next cht

End Sub

上記のマクロを実行すると、アクティブなシート上に存在するグラフが順番に選択されて、グラフ名がメッセージボックスに表示されます。

サンプルマクロの解説

ワークシート上のグラフはVBA的にはChartObjectオブジェクトです。

オブジェクトブラウザーでChartObjectオブジェクトを確認すると下図のようなプロパティ・メソッドを持つことがわかります。

ワークシート上の全グラフをFor Each~Nextループで処理するExcelマクロ

上記のマクロではFor Each~Nextループの中で、SelectメソッドとNameプロパティを利用しています。

このChartObjectオブジェクトを単一オブジェクトとして持つのは、ChartObjectsコレクションオブジェクトです。

ワークシート上の全グラフをFor Each~Nextループで処理するExcelマクロ

ChartObjectsコレクションのItemがプロパティではなくメソッドとして作られているのはExcel VBA的には珍しいと感じる部分です。

ワークシート上のChartObjectsコレクションオブジェクトは、WorksheetオブジェクトのChartObjectsメソッドで取得できるので、

ワークシート上の全グラフをFor Each~Nextループで処理するExcelマクロ

上記のようなFor Each~Nextループにしました。

Worksheet.ChartObjectsが、プロパティではなくメソッドとして作られているのも、Excel VBA的には珍しい部分です。
[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » ワークシート上の全グラフをFor Each~Nextループで処理するExcelマクロ

TrackBack:0

TrackBack URL

Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » ワークシート上の全グラフをFor Each~Nextループで処理するExcelマクロ

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

検索


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

.