「vba selection グラフかどうか」
という検索キーワードで、このサイト『インストラクターのネタ帳』へアクセスがありました。
Excel上で選択されているのがグラフかどうかを判定するには、VBAでどのようなコードを書けばいいのか探していた方による検索でしょう。
Selectionでグラフが選択されているかを判定するのは面倒
「selection」という単語が使われていますが、Excel VBAのSelectionプロパティを使って取得できるオブジェクトから、
選択されているのがグラフかどうかを判定しようとすると、かなり面倒です。
Excelのグラフは、さまざまな要素から構成されており、グラフの何が選択されているかによって、Selectionプロパティで取得できるオブジェクトは異なるためです。
具体例をいくつか挙げましょう。
グラフエリアが選択されている場合、Selectionプロパティで取得できるのはChartAreaオブジェクトです。
軸が選択されてる場合にはAxisオブジェクトです。
凡例ならLegendオブジェクト、目盛線ならGridLindesオブジェクトです。
グラフの構成要素はまだまだあり、Selectionプロパティを使うと別のオブジェクトが返されます。
Selectionプロパティを使って、グラフが選択されているかを判定するには、これらのオブジェクトを列挙してOr条件で判定する必要があり、現実的ではありません。
で、どうするかというと、ActiveChartプロパティを使います。
ActiveChartプロパティでグラフが選択されているかどうか判定する
グラフのどの要素が選択されていたとしても、グラフの何らかの要素が選択されていれば、ActiveChartプロパティはChartオブジェクトを返します。
また、グラフの要素が選択されていなければActiveChartプロパティの戻り値はNothingです。
具体的には以下のようなコードで、グラフが選択されているかどうかを判定できます。
Dim cht As Chart
Set cht = ActiveChart
If cht Is Nothing Then
MsgBox "グラフは選択されていません。"
Else
MsgBox "グラフが選択されています。"
End If
End Sub
最終更新日時:2023-03-17 15:50
- Newer:Formulaプロパティを持つExcelのオブジェクト一覧
- Older:LineFormatのDeleteは??
Home » エクセルマクロ・Excel VBAの使い方 » グラフ・Chart » グラフが選択されているかどうかをVBAで判定するには