- ベストアンサー
Excel2002VBA「~のときは○○、そうではないときは何もしない」
VBA初心者です。環境は、Excel2002で、Windows2000です。 VBAで、下記のようにしたいのですが、どうしてもいい方法を思いつきません。 どなたか、ご指導願います。 マクロ実行時にSheet2があるときは、Sheet2を削除。 ただし、ないときには何もしないで、次の処理へとぶ。 On Error GoTo を利用するのでしょうか? けれど、エラー処理へとんだ場合、どう処理したらいいのか分かりません。 どうぞよろしくお願いします。
- みんなの回答 (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
その他の回答 (3)
- -boya-
- ベストアンサー率35% (176/494)
エラーを起こさせるのはあまり得策では無いと思われます。 処理を行う前に全てのワークシートの名前を確認して、 名前が"Sheet2"ならそのシートを削除すると言う方法も あるかと思います。 Dim i as Integer For i = 1 To Sheets.Count If Sheets(i).Name = "Sheet2" Then Sheets(i).Delete End If Next i
お礼
ありがとうございました。 最初は「?」だった回答内容が、拝見したあと少し勉強して分かるようになりました!
- popesyu
- ベストアンサー率36% (1782/4883)
方法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
お礼
ありがとうございました。 とても助かりました。もっと勉強するようにします。
- palmmy
- ベストアンサー率38% (841/2169)
いちばん簡単なのは、 On Error Resume Next ・Sheet2を削除 On Error GoTo 0 とりあえず消す。エラーは無視、のパターンです。 On Error GoTo 0で無視を解除します。
お礼
ありがとうございました。 「Resume」というのもあるのですね。今後のために勉強します。
お礼
ありがとうございます。 #2さんと似てるプログラムですが、これを採用させていただきました。今、やっと数日悩まされていた仕事が終わりました。