プロが教えるわが家の防犯対策術!

エクセルのVBで教えてほしいんですが、
以下のもので
実行時エラー'1004':
指定したコレクションに対するインデックスが境界を越えています

とエラーがでます

Sub delgrf()


Sheets("断面図").Select
For i = 1 To 1000
ActiveSheet.Shapes.Range(Array(1)).Delete
On Error GoTo 10
Next i
10 Sheets("入力").Select

End Sub

sheet断面図に何もないときに実行すると
ActiveSheet・・・でエラーします(当然だけど;^^)

「断面ありませんよ~」みたいなダイアログ表示して
実行時エラーを回避できるにはどうしたらいいですか?
ご教授お願いします。

A 回答 (1件)

こんな感じでしょうか?



Sub delgrf1()

Dim sp As Variant

Sheets("断面図").Select
If ActiveSheet.Shapes.Count = 0 Then
MsgBox "シェイプはありません。"
Else
If MsgBox("シェイプを削除しますか?", vbYesNo) = vbYes Then
For Each sp In ActiveSheet.Shapes
sp.Delete
Next
End If
End If

Sheets("入力").Select

End Sub


単なる削除ならこちら
Sub delgrf0()

Dim sp As Variant

Sheets("断面図").Select
For Each sp In ActiveSheet.Shapes
sp.Delete
Next
Sheets("入力").Select
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます!
上のメッセージボックスVerを使わせてもらいます^^

お礼日時:2006/02/14 09:16

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

このQ&Aを見た人はこんなQ&Aも見ています