「vba 図形が選択されているか」
という検索キーワードでアクセスがありました。
VBAで図形が選択されているかどうかを判定するには、どのようなコードを書けばいいのかを探していたのでしょう。
検索キーワード「vba 図形が選択されているか」だけでは、どのアプリケーションの件かわかりませんが、Excel VBAのコードを2つご紹介しておきます。
VarType関数で図形が選択されているか判定する
VarType関数を使った以下のようなコードで、図形が選択されているかを判定できます。
If VarType(Selection) = vbObject Then
MsgBox "図形が選択されています!"
Else
MsgBox "図形は選択されていせん。"
End If
End Sub
VBAのVarType関数は、
引数に指定された式の型が何なのか、VbVarType列挙に定義されている定数を返します。
図形が選択されている場合は、定数vbObjectを返すことを利用して判定しています。
ShapeRangeプロパティで図形が選択されているか判定する
ShapeRangeプロパティを使った以下のようなコードでも、図形が選択されているかを判定できます。
On Error GoTo ErrHandl
Dim shp As ShapeRange
Set shp = Selection.ShapeRange
MsgBox "図形が選択されています!"
Exit Sub
ErrHandl:
Err.Clear
MsgBox "図形は選択されていせん。"
End Sub
Selectionプロパティで取得したオブジェクトが図形でなければ、そのオブジェクトのShapeRangeプロパティはShapeRangeオブジェクトを返せませんから、「As ShapeRange」と宣言したオブジェクト変数への代入文
Set shp = Selection.ShapeRange
で実行時エラーが発生します。
そのような挙動を利用したコードです。
「vba 図形が選択されているか」
を検索なさった方は、図形が選択されているかどうか判定したあと、その図形を操作するのではないかと思いますので、それならこの実行時エラーを利用した判定でいいのではないかという気がしています。
最終更新日時:2021-12-17 15:30
Home » エクセルマクロ・Excel VBAの使い方 » DrawingObjects » 図形が選択されているか判定する-VarType関数・ShapeRangeプロパティ