重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

VBAのヘルプでは

Set myDocument = Worksheets(1)
myDocument.Shapes.SelectAll
Set sr = Selection.ShapeRange

と書いてありましたが、メモリ不足で処理できません。
何か良い方法ないでしょうか?

最終的にワークシート上の図形をすべて削除したいのです。VBAではどうするのか教えてください!
EXCEL2000です。

A 回答 (2件)

下記の様な感じでどうでしょう?


ただし、下記では、図形に限らず
sheet上のコントロールまで削除されちゃいます。
図形のみに絞りたい場合はnameを取得して
if文で判定してやれば良いかと。


Sub ObjectDelete()
Dim lObjectCt As Long
Dim lOIndex As Long

lObjectCt = Worksheets("Sheet1").Shapes.Count

For lOIndex = lObjectCt To 1 Step -1
Worksheets("Sheet1").Shapes.Item(lOIndex).Delete
Next
End Sub
    • good
    • 0
この回答へのお礼

できました!詳しい説明ありがとうございました!
図形の名前をしてせずにできる方法を探していたので、この方法でバッチリできました。ありがとうございました!

お礼日時:2003/08/02 08:34

Sub test01()


Worksheets("sheet1").DrawingObjects.Select
'Selection.Delete
End Sub
Worksheets("sheet1").DrawingObjects.Select
でオートシェイプやコントロール全てが小さい□(四角)が2-8個でる、デザインモード状態になりましたが。
上記は'を取り除くと、すべて図形を抹消のコードになります。
ただ私のテストでの図形の種類・数のバラエティが少なかったので、terakuraさんの方でやって見てください。

この回答への補足

回答ありがとうございます。
’を取り除いてやってみました。見事削除したい図形はすべて選択され、削除できました。ただ、その後に、中断モードでは実行できないというメッセージが出てきてしまいます。
このメッセージが出てこないようにするには・・・?と悩んでいます。大変申し訳ありませんが、もし分かれば教えて下さい。

補足日時:2003/08/02 08:16
    • good
    • 0
この回答へのお礼

先程補足しましたが、できました!大変申し訳ありません。ステップインで進めていくと、メッセージが出るようです。通常に実行したら何も問題なく実行できました!ずっと悩んでいたのに、たった2行でできるなんて・・・!
本当にありがとうございました!

お礼日時:2003/08/02 08:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!