レガシーなオブジェクト・DrawingObjects系のオブジェクトは(わかっている人にとっては便利なのですが)、Excel VBA初学者のハードルを上げる要因になっています。
「vba Pictures Delete」
「ActiveSheet.Pictures.Delete」
といった検索キーワードでアクセスがありました。
DrawingObjects系のオブジェクトを使った
ActiveSheet.Pictures.Delete
といったExcel VBAのコードを、どこかで見かけた方による検索でしょう。
ActiveSheet.Pictures.Deleteの意味
結論からお伝えすると「ActiveSheet.Pictures.Delete」とは、Worksheet.Picturesメソッドを使ってアクティブシート上の全画像を表すPicturesコレクションを取得して、Pictures.Deleteメソッドで画像を一括削除しているコードです。
意味としては上記のとおりですが、Picturesコレクションはレガシーなオブジェクトであり、最低でもFor Each~Nextループを使った画像削除を理解してから使うことを、おすすめします。
Worksheet.Pictures.Deleteの確認手順
「ActiveSheet.Pictures.Delete」
を使うのなら、オブジェクトブラウザーを引き、テストコードを実行して戻り値を確認し、コードの意味を理解してからにしましょう。
オブジェクトブラウザーで[非表示のメンバーを表示]オプションをOnの状態にすると、PicturesオブジェクトやPicturesメソッドを確認できるようになります。
グローバルなActiveSheetプロパティで取得できるWorksheetオブジェクトには、戻り値が「As Object」として定義されているPicturesメソッドが、実は存在することがわかります。
Worksheet.Picturesメソッドの戻り値は、Objectと定義されていますけれど、
Sub Picturesメソッドの戻り値を確認する()
Dim obj As Object
Set obj = ActiveSheet.Pictures
Stop
End Sub
といったSubプロシージャを実行して、ローカルウィンドウを使ってオブジェクト変数objを確認すれば、下図のとおりActiveSheet.Picturesの戻り値がPicturesオブジェクトであることがわかります。
オブジェクトブラウザーのクラスペインで「Pictures」を選択すれば、
Deleteメソッドが存在することを確認できます。
最終更新日時:2021-11-04 13:32
Home » エクセルマクロ・Excel VBAの使い方 » DrawingObjects » ActiveSheet.Pictures.Deleteとは