「アクティブシートのdrawingobjectsの有無 マクロ」
という検索で、このサイト『インストラクターのネタ帳』へのアクセスがありました。
DrawingObjectsがアクティブなシートに存在するかどうかを調べるには、Excel VBAでどのようなオブジェクト式を指定すればいいのかを探している方による、検索キーワードです。
本当にDrawingObjectsを使う必要がありますか?
まず本当に、DrawingObjectsオブジェクトを使う必要があるか、考えましょう。
DrawingObjectsはシート上の全描画オブジェクトを表しますが、レガシーなオブジェクトです。オブジェクトブラウザーでは非表示に設定されていまます。
最近のExcelの場合、描画オブジェクトはShapesやShapeRangeで取得できます。DrawingObjectsオブジェクトを使わないと、上手く処理できないときにのみDrawingObjectsを使うことを考えるべきだと思います。
Shapesの有無を確認するサンプルマクロ
アクティブなシートに描画オブジェクトが存在するのかどうかを調べるのなら、Shapesコレクションオブジェクトで十分なはずです。
以下のマクロを実行すると、アクティブシートに描画オブジェクトが存在しなければ「無いよ。」存在していれば「有ります。」というメッセージが、表示されます。
If ActiveSheet.Shapes.Count = 0 Then
MsgBox "無いよ。"
Else
MsgBox "有ります。"
End If
End Sub
ShapesコレクションオブジェクトのCountプロパティを調べ、
「0」ならば描画オブジェクトは存在していない、「0」でなければ存在するという判定を行っています。
DrawingObjectsの有無を確認するサンプルマクロ
上記のとおり、描画オブジェクトの存在確認ならShapesを使えば十分なはずですが、どうしてもDrawingObjectsを使いたいのなら以下のようなマクロです。
If ActiveSheet.DrawingObjects.Count = 0 Then
MsgBox "無いよ。"
Else
MsgBox "有ります。"
End Sub
DrawingObjectsオブジェクトにもCountプロパティがありますから、
先にご紹介したマクロと同じく、「0」ならば存在しない「0」でなければ存在する、という判定を行っています。
DrawingObjectsよりShapes/Shapeをまずは理解しましょう
DrawingObjectsは古いオブジェクトのため、他のオブジェクトとは構造が大きく異なっています。
描画オブジェクトをVBAから操作したいという方で、まだExcelの基本的なオブジェクトモデルを理解できていないという方は、ShapesコレクションオブジェクトとShapeオブジェクトについて、まず理解することをおすすめしておきます。
最終更新日時:2021-12-18 10:30
- Newer:シートを指定してRangeを取得する
- Older:もっとできるかも という気になれた
Home » エクセルマクロ・Excel VBAの使い方 » DrawingObjects » DrawingObjects・描画オブジェクトの存在を確認するには?