• ベストアンサー

VBAのワークシート削除について

VBAの初心者です。 VBAでワークシートを削除したいのですが、削除するワークシートがある場合とない場合があります。削除するワークシートがある場合は問題なく削除できますが、 ない場合、『インデックスが有効範囲にありません。』でエラーになってしまいます。(削除するワークシートが無いから当然ですが・・・) このような場合、どのように対処したら良いのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • TTak
  • ベストアンサー率52% (206/389)
回答No.1

最も手っ取り早い方法として、 On Error GoTo XXX が良いでしょう。エラーが発生したらXXXまで飛ばすというものです。 ループ文で削除している場合はXXXを、削除コードの次の行などに置いておくと結果的に処理を飛ばしてくれます。 Sub Macro1() On Error GoTo XXX   Sheets("AAA").Delete Exit Sub XXX: End Sub なお、ブックには最低1シート必要ですから、最後のシートは消えません。

hiratti
質問者

お礼

回答ありがとうございます。 思った通りの結果が得られました。また何かありましたら宜しくお願い致します。

その他の回答 (1)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。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枚以上ある場合に、削除したいシート名が見つかれば削除して終了します。

hiratti
質問者

お礼

回答ありがとうございます。 上記の通りにしてみましたが、違うシートが削除されたりして思った通りの結果が得られませんでした(私のVBAがおかしかったのかな?)。 No.1の回答にて解決しました。また何かありましたら宜しくお願い致します。

関連するQ&A

専門家に質問してみよう