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

単純な複数のシートを移動するマクロを作りたいのですが、そのうちの一つがない場合はその作業を飛ばして次に進むにはどう組めばよいでしょうか?
行いたい作業は複数の既存ファイルのシートの並び替えです。ファイルによってシートの数が違うため対応できるようにしたいです
10個程あるシートの中から3つのシートを末尾から”三ニ一”の並びにしようとしています
マクロの記憶機能でマクロを作ったところ仮に三番のシートがなかった場合処理が中断されてしまいました
該当するシートがなければ作業を飛ばして次の作業に進むにはどのようにくめばよいのでしょうか
(If Not を使えばよいかと考え追記してみましたがおそらくsetの段階で間違っているのでしょう、うまくゆきませんでした)
↓組んだコードです

Set sh = Sheets("三番")
If Not wk Is Nothing Then
shcut = Sheets.Count
Sheets("一番").Select
Sheets("一番").Move After:=Sheets(shcut)
Sheets("二番").Select
Sheets("二番").Move After:=Sheets(shcut)
Sheets("三番").Select
Sheets("三番").Move After:=Sheets(shcut)
End If
Sheets("一番").Select
Range("H24:O24").Select
End Sub

書籍やサイトで勉強中ですがなかなかうまくゆかず
ご教授お願いします

質問者からの補足コメント

  • どう思う?

    自己解決下でしょうか。On Error Resume Next をつければすんなりといけてはいます
    マクロニュービーなためこれで問題ないという回答や不都合があれば指摘お願い致します。

    On Error Resume Next
    shcut = Sheets.Count
    Sheets("一番").Select
    Sheets("一番").Move After:=Sheets(shcut)
    Sheets("二番").Select
    Sheets("二番").Move After:=Sheets(shcut)
    Sheets("三番").Select
    Sheets("三番").Move After:=Sheets(shcut)
    Sheets("一番").Select
    Range("H24:O24").Select
    End Sub

      補足日時:2016/03/05 23:16

A 回答 (1件)

自己解決、おめでとうございます。

記載されているコードが想定通りの動作であれば、問題はありません。

注意点としては、On Error Resume Next は以降で発生したすべてのエラーを無視して処理が継続されます。よって、本来のエラー(プログラムバグ等)があってもスルーしてしまいます。すると本来の結果が得られないのに、どこがおかしいのか発見が難しくなります。
記載の例でいうと、例えば、Sheets("一番")が無い場合、下から3行目のSelectに失敗します。それにより、次の行Range("H24:O24").Select は、Sheets("三番")のセルを選択してしまいます。これが、全体に影響を与えないのであれば問題はないのですが…。

エラーの発生が予想される部分を通過したら、On Error Goto 0 で エラートラップを無効にすべきです。
    • good
    • 1
この回答へのお礼

ありがとう

回答有り難うございます、ご指摘の例ではSheetがなければ最後のアクティブセルの場所はどこでもかまわないのでRange("H24:O24").Selectは無視されていてかまいません
とは言え他のマクロと組み合わせて使うつもりでしたので私も気になっていました
これでどうでしょうか?

On Error Resume Next
shcut = Sheets.Count
Sheets("一番").Select
Sheets("一番").Move After:=Sheets(shcut)
Sheets("二番").Select
Sheets("二番").Move After:=Sheets(shcut)
Sheets("三番").Select
Sheets("三番").Move After:=Sheets(shcut)
Sheets("一番").Select
Range("H24:O24").Select
On Error Goto 0
End Sub

お礼日時:2016/03/06 20:51

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

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


このQ&Aを見た人がよく見るQ&A