Home » エクセルマクロ・Excel VBAの使い方 » DrawingObjects » 図形が選択されているか判定する-VarType関数・ShapeRangeプロパティ

図形が選択されているか判定する-VarType関数・ShapeRangeプロパティ

動作検証バージョン:Windows版Excel(バージョン1811 ビルド11029.20108)

「vba 図形が選択されているか」
という検索キーワードでアクセスがありました。

VBAで図形が選択されているかどうかを判定するには、どのようなコードを書けばいいのかを探していたのでしょう。

検索キーワード「vba 図形が選択されているか」だけでは、どのアプリケーションの件かわかりませんが、Excel VBAのコードを2つご紹介しておきます。

VarType関数で図形が選択されているか判定する

VarType関数を使った以下のようなコードで、図形が選択されているかを判定できます。

Sub 図形が選択されているか判定する_VarType関数()
 If VarType(Selection) = vbObject Then
  MsgBox "図形が選択されています!"
 Else
  MsgBox "図形は選択されていせん。"
 End If
End Sub

VBAのVarType関数は、

図形が選択されているか判定する

引数に指定された式の型が何なのか、VbVarType列挙に定義されている定数を返します。

図形が選択されているか判定する

図形が選択されている場合は、定数vbObjectを返すことを利用して判定しています。

ShapeRangeプロパティで図形が選択されているか判定する

ShapeRangeプロパティを使った以下のようなコードでも、図形が選択されているかを判定できます。

Sub 図形が選択されているか判定する_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プロパティ

「DrawingObjects」の記事一覧

検索


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

.