- ベストアンサー
VBAのワークシート削除について
VBAの初心者です。 VBAでワークシートを削除したいのですが、削除するワークシートがある場合とない場合があります。削除するワークシートがある場合は問題なく削除できますが、 ない場合、『インデックスが有効範囲にありません。』でエラーになってしまいます。(削除するワークシートが無いから当然ですが・・・) このような場合、どのように対処したら良いのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
最も手っ取り早い方法として、 On Error GoTo XXX が良いでしょう。エラーが発生したらXXXまで飛ばすというものです。 ループ文で削除している場合はXXXを、削除コードの次の行などに置いておくと結果的に処理を飛ばしてくれます。 Sub Macro1() On Error GoTo XXX Sheets("AAA").Delete Exit Sub XXX: End Sub なお、ブックには最低1シート必要ですから、最後のシートは消えません。
その他の回答 (1)
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 ワークシートの名前がわかっている場合です。 (シート名を"Sheet1"とする) Dim WS As WorkSheet If WorkSheets.Count > 1 Then For Each WS In WorkSheets If WS.Name = "Sheet1" Then WS.Delete Exit For End If Next WS End If シートが2枚以上ある場合に、削除したいシート名が見つかれば削除して終了します。
お礼
回答ありがとうございます。 上記の通りにしてみましたが、違うシートが削除されたりして思った通りの結果が得られませんでした(私のVBAがおかしかったのかな?)。 No.1の回答にて解決しました。また何かありましたら宜しくお願い致します。
お礼
回答ありがとうございます。 思った通りの結果が得られました。また何かありましたら宜しくお願い致します。