Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » グラフが選択されているかどうかをVBAで判定するには

グラフが選択されているかどうかをVBAで判定するには

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2108 ビルド14326.20348 Microsoft Store)

「vba selection グラフかどうか」
という検索キーワードで、このサイト『インストラクターのネタ帳』へアクセスがありました。

Excel上で選択されているのがグラフかどうかを判定するには、VBAでどのようなコードを書けばいいのか探していた方による検索でしょう。

Selectionでグラフが選択されているかを判定するのは面倒

「selection」という単語が使われていますが、Excel VBAのSelectionプロパティを使って取得できるオブジェクトから、

Excel.Global.Selection

選択されているのがグラフかどうかを判定しようとすると、かなり面倒です。

Excelのグラフは、さまざまな要素から構成されており、グラフの何が選択されているかによって、Selectionプロパティで取得できるオブジェクトは異なるためです。

具体例をいくつか挙げましょう。

グラフエリアが選択されている場合、Selectionプロパティで取得できるのはChartAreaオブジェクトです。
軸が選択されてる場合にはAxisオブジェクトです。
凡例ならLegendオブジェクト、目盛線ならGridLindesオブジェクトです。
グラフの構成要素はまだまだあり、Selectionプロパティを使うと別のオブジェクトが返されます。

Selectionプロパティを使って、グラフが選択されているかを判定するには、これらのオブジェクトを列挙してOr条件で判定する必要があり、現実的ではありません。

で、どうするかというと、ActiveChartプロパティを使います。

ActiveChartプロパティでグラフが選択されているかどうか判定する

グラフのどの要素が選択されていたとしても、グラフの何らかの要素が選択されていれば、ActiveChartプロパティはChartオブジェクトを返します。

Excel.Global.ActiveChart

また、グラフの要素が選択されていなければActiveChartプロパティの戻り値はNothingです。

具体的には以下のようなコードで、グラフが選択されているかどうかを判定できます。

Sub グラフが選択されているかどうか判定する()
 Dim cht As Chart
 Set cht = ActiveChart

 If cht Is Nothing Then
  MsgBox "グラフは選択されていません。"
 Else
  MsgBox "グラフが選択されています。"
 End If
End Sub

最終更新日時:2023-03-17 15:50

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » グラフが選択されているかどうかをVBAで判定するには

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

検索


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

.