• ベストアンサー

Excel2002VBA「~のときは○○、そうではないときは何もしない」

VBA初心者です。環境は、Excel2002で、Windows2000です。 VBAで、下記のようにしたいのですが、どうしてもいい方法を思いつきません。 どなたか、ご指導願います。 マクロ実行時にSheet2があるときは、Sheet2を削除。 ただし、ないときには何もしないで、次の処理へとぶ。 On Error GoTo を利用するのでしょうか? けれど、エラー処理へとんだ場合、どう処理したらいいのか分かりません。 どうぞよろしくお願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

Sub test02() 該当しない時に何もしないことを明確にするため、下記はどうでしょう。 Dim ws As Worksheet For Each ws In Worksheets If ws.Name = "Sheet2" Then '目的の処理をする ws.Delete Exit For Else '何もしない End If Next End Sub

xxxpurexxx
質問者

お礼

ありがとうございます。 #2さんと似てるプログラムですが、これを採用させていただきました。今、やっと数日悩まされていた仕事が終わりました。

その他の回答 (3)

  • -boya-
  • ベストアンサー率35% (176/494)
回答No.3

エラーを起こさせるのはあまり得策では無いと思われます。 処理を行う前に全てのワークシートの名前を確認して、 名前が"Sheet2"ならそのシートを削除すると言う方法も あるかと思います。 Dim i as Integer For i = 1 To Sheets.Count If Sheets(i).Name = "Sheet2" Then Sheets(i).Delete End If Next i

xxxpurexxx
質問者

お礼

ありがとうございました。 最初は「?」だった回答内容が、拝見したあと少し勉強して分かるようになりました!

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.2

方法1:GoToを使わない方法 あるかどうかを確認して削除 --- For Each ws In Worksheets  If ws.Name = "Sheet2" Then   'Sheet2があります   ws.delete   Exit For  End If Next --- 方法2:Gotoを使う(Resume Nextは1さんの方法で) とりあえず削除して削除できなかったら処理を飛ばす On Error GoTo err01 Worksheets("Sheet2").Delete Exit Sub err01: '削除に失敗 End Sub

xxxpurexxx
質問者

お礼

ありがとうございました。 とても助かりました。もっと勉強するようにします。

  • palmmy
  • ベストアンサー率38% (841/2169)
回答No.1

いちばん簡単なのは、 On Error Resume Next ・Sheet2を削除 On Error GoTo 0 とりあえず消す。エラーは無視、のパターンです。 On Error GoTo 0で無視を解除します。

xxxpurexxx
質問者

お礼

ありがとうございました。 「Resume」というのもあるのですね。今後のために勉強します。

関連するQ&A