Home » エクセルマクロ・Excel VBAの使い方 » DrawingObjects » 「WorksheetクラスのDrawingObjectsプロパティを取得できません。」とは

「WorksheetクラスのDrawingObjectsプロパティを取得できません。」とは

動作検証バージョン:Windows 11 Home + 64bit Excel バージョン 2411(ビルド18201.20000クイック実行)ベータチャネル

Excel VBAの
「WorksheetクラスのDrawingObjectsプロパティを取得できません。」
というエラーについて調べる方は少なくないようです。

Worksheetオブジェクト等に用意されているDrawingObjectsメソッドで取得できる、

DrawingObjectsコレクションに関係するエラーメッセージです。

DrawingObjects系のオブジェクトとは

まず、DrawingObjects系のオブジェクトについて知っておいてください。

Worksheet.DrawingObjectsメソッド等を使って取得できるDrawingObjectsコレクションや、その要素である各種オブジェクトを使って、シート上に存在する図形等を操作することができます。

しかし、これらDrawingObjects系のオブジェクトは現在では非表示に設定されている、古いオブジェクトです。

最近は、拙著『理解するExcel VBA/図形操作の基本』で解説しているShapesコレクションやShapeオブジェクト、ShapeRangeオブジェクトを使うのが基本です。

最近といっても、もう25年以上経過しているわけですが……

基本であるShapes/Shape/ShapeRangeについて理解している方が、コードをシンプルにするために使うために使うのが、DrawingObjects系のオブジェクトだということを知っておいてください。

「WorksheetクラスのDrawingObjectsプロパティを取得できません。」エラーになる原因

上記の内容をふまえて、、
「WorksheetクラスのDrawingObjectsプロパティを取得できません。」
エラーになる可能性はいくつかあるのでしょうが、DrawingObjectsコレクションの要素オブジェクトを取得できない場合に発生するのが基本です。

実例を見ましょう。
何らかの図形をアクティブシート上に作成してから、以下のExcelマクロを実行すると「WorksheetクラスのDrawingObjectsプロパティを取得できません。」エラーになります。

Sub DrawingObjectsの要素を取得できない様子を確認する()
 Dim obj As Object
 Set obj = ActiveSheet.DrawingObjects("hogehoge")
 obj.Select
End Sub

作成した図形の名前を「hogehoge」に変更した場合にはエラーが発生せず、名前を「hogehoge」に変更した図形が選択されます。

Worksheet.Shapesプロパティで書くと

DrawingObjectsメッソッドを使わないで、Worksheet.Shapesプロパティを使って上記と同様の処理を行うコードを書くと、以下のとおりです。

Dim shp As Shape
Set shp = ActiveSheet.Shapes("hogehoge")
shp.Select

この場合、アクティブシートに「hogehoge」という名前の図形がなければ
「指定した名前のアイテムが見つかりませんでした。」
実行時エラーが発生します。

これに相当するのが、
「WorksheetクラスのDrawingObjectsプロパティを取得できません。」
です。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » DrawingObjects » 「WorksheetクラスのDrawingObjectsプロパティを取得できません。」とは

「DrawingObjects」の記事一覧

検索


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

.