単純な複数のシートを移動するマクロを作りたいのですが、そのうちの一つがない場合はその作業を飛ばして次に進むにはどう組めばよいでしょうか?
行いたい作業は複数の既存ファイルのシートの並び替えです。ファイルによってシートの数が違うため対応できるようにしたいです
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
書籍やサイトで勉強中ですがなかなかうまくゆかず
ご教授お願いします
No.1ベストアンサー
- 回答日時:
自己解決、おめでとうございます。
記載されているコードが想定通りの動作であれば、問題はありません。注意点としては、On Error Resume Next は以降で発生したすべてのエラーを無視して処理が継続されます。よって、本来のエラー(プログラムバグ等)があってもスルーしてしまいます。すると本来の結果が得られないのに、どこがおかしいのか発見が難しくなります。
記載の例でいうと、例えば、Sheets("一番")が無い場合、下から3行目のSelectに失敗します。それにより、次の行Range("H24:O24").Select は、Sheets("三番")のセルを選択してしまいます。これが、全体に影響を与えないのであれば問題はないのですが…。
エラーの発生が予想される部分を通過したら、On Error Goto 0 で エラートラップを無効にすべきです。
回答有り難うございます、ご指摘の例では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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) マクロで行を追加、削除すると行位置がずれますが、解決方法はありませんか?。 5 2022/05/28 16:03
- Excel(エクセル) エクセル VBAでシートのコピーを作りたい 1 2023/05/18 07:42
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/06/01 14:45
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) 別ブックからシートのコピー 3 2022/04/01 20:07
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/03/25 08:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
VBA 存在しないシートを選択した時にエラーメッセージを表示するには?
Visual Basic(VBA)
-
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
ファイルが見つからない時、スルーしたい。
Visual Basic(VBA)
-
-
4
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
5
VBAのオートフィルターで該当行がない場合に処理を止めたい
Excel(エクセル)
-
6
VBA 見つからなかった時の処理
Excel(エクセル)
-
7
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
8
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
9
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
10
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
11
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
12
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
13
同じ作業を複数のシートに実行させるにはどうしたらいいのでしょうか
Visual Basic(VBA)
-
14
【VBA】特定列に文字が入っていたらそのセル行をコピーしてマスターブックの同じ行に貼り付けたい
その他(Microsoft Office)
-
15
【vba】指定範囲の中に任意の文字があるときの条件分岐
Excel(エクセル)
-
16
特定の文字を含むシートだけマクロ処理をしたい
Visual Basic(VBA)
-
17
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
18
エクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?
Excel(エクセル)
-
19
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
20
Exel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
同じ作業を複数のシートに実行...
-
【ExcelVBA】全シートのセルの...
-
excelのマクロで該当処理できな...
-
【Excel VBA】Worksheets().Act...
-
Excel VBA 複数行を数の分だけ...
-
特定の文字を含むシートだけマ...
-
ユーザーフォームに入力したデ...
-
XL:BeforeDoubleClickが動かない
-
エクセルのシート名変更で重複...
-
ブック名、シート名を他のモジ...
-
シートが保護されている状態で...
-
エクセルで通し番号を入れてチ...
-
実行時エラー'1004': WorkSheet...
-
VBAで大量のファイルをシート名...
-
Excelマクロのエラーを解決した...
-
VBAの授業でナンプレを制作して...
-
シート名の一部を変更する方法...
-
ExcelのデータをJavaの配列に格...
-
エクセルVBA Ifでシート名が合...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
VBAで大量のファイルをシート名...
-
ユーザーフォームに入力したデ...
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
VBA 存在しないシートを選...
-
Excelマクロのエラーを解決した...
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
XL:BeforeDoubleClickが動かない
-
シートが保護されている状態で...
-
実行時エラー1004「Select メソ...
-
【Excel VBA】Worksheets().Act...
-
ブック名、シート名を他のモジ...
-
エクセルのシート名変更で重複...
-
ExcelのVBAのマクロで他のシー...
-
Excel VBA 複数行を数の分だけ...
-
エクセルのマクロについて教え...
-
VBA 最終行まで数式をコピーする
おすすめ情報
自己解決下でしょうか。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