Home » エクセルマクロ・Excel VBAの使い方 » DrawingObjects » DrawingObjects・描画オブジェクトの存在を確認するには?

DrawingObjects・描画オブジェクトの存在を確認するには?

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

VBAでDrawingObjects・描画オブジェクトの存在を確認するには?

「アクティブシートのdrawingobjectsの有無 マクロ」
という検索で、このサイト『インストラクターのネタ帳』へのアクセスがありました。

DrawingObjectsがアクティブなシートに存在するかどうかを調べるには、Excel VBAでどのようなオブジェクト式を指定すればいいのかを探している方による、検索キーワードです。

本当にDrawingObjectsを使う必要がありますか?

まず本当に、DrawingObjectsオブジェクトを使う必要があるか、考えましょう。

DrawingObjectsはシート上の全描画オブジェクトを表しますが、レガシーなオブジェクトです。オブジェクトブラウザーでは非表示に設定されていまます。

最近のExcelの場合、描画オブジェクトはShapesやShapeRangeで取得できます。DrawingObjectsオブジェクトを使わないと、上手く処理できないときにのみDrawingObjectsを使うことを考えるべきだと思います。

Shapesの有無を確認するサンプルマクロ

アクティブなシートに描画オブジェクトが存在するのかどうかを調べるのなら、Shapesコレクションオブジェクトで十分なはずです。

以下のマクロを実行すると、アクティブシートに描画オブジェクトが存在しなければ「無いよ。」存在していれば「有ります。」というメッセージが、表示されます。

Sub Shapesの有無を判定する()
 If ActiveSheet.Shapes.Count = 0 Then
  MsgBox "無いよ。"
 Else
  MsgBox "有ります。"
 End If
End Sub

ShapesコレクションオブジェクトのCountプロパティを調べ、

VBAでDrawingObjects・描画オブジェクトの存在を確認するには?

「0」ならば描画オブジェクトは存在していない、「0」でなければ存在するという判定を行っています。

DrawingObjectsの有無を確認するサンプルマクロ

上記のとおり、描画オブジェクトの存在確認ならShapesを使えば十分なはずですが、どうしてもDrawingObjectsを使いたいのなら以下のようなマクロです。

Sub DrawinObjectsの有無を判定する()
 If ActiveSheet.DrawingObjects.Count = 0 Then
  MsgBox "無いよ。"
 Else
  MsgBox "有ります。"
End Sub

DrawingObjectsオブジェクトにもCountプロパティがありますから、

VBAでDrawingObjects・描画オブジェクトの存在を確認するには?

先にご紹介したマクロと同じく、「0」ならば存在しない「0」でなければ存在する、という判定を行っています。

DrawingObjectsよりShapes/Shapeをまずは理解しましょう

DrawingObjectsは古いオブジェクトのため、他のオブジェクトとは構造が大きく異なっています。

描画オブジェクトをVBAから操作したいという方で、まだExcelの基本的なオブジェクトモデルを理解できていないという方は、ShapesコレクションオブジェクトとShapeオブジェクトについて、まず理解することをおすすめしておきます。

最終更新日時:2021-12-18 10:30

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » DrawingObjects » DrawingObjects・描画オブジェクトの存在を確認するには?

「DrawingObjects」の記事一覧

検索


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

.