
単純な複数のシートを移動するマクロを作りたいのですが、そのうちの一つがない場合はその作業を飛ばして次に進むにはどう組めばよいでしょうか?
行いたい作業は複数の既存ファイルのシートの並び替えです。ファイルによってシートの数が違うため対応できるようにしたいです
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も見ています
-
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
VBA 存在しないシートを選択した時にエラーメッセージを表示するには?
Visual Basic(VBA)
-
VBAのオートフィルターで該当行がない場合に処理を止めたい
Excel(エクセル)
-
-
4
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
5
ファイルが見つからない時、スルーしたい。
Visual Basic(VBA)
-
6
VBA 見つからなかった時の処理
Excel(エクセル)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
特定の文字を含むシートだけマクロ処理をしたい
Visual Basic(VBA)
-
9
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
10
オートフィルターをかけ、#N/A以外で絞込みするVBA記述をご教示ください
Excel(エクセル)
-
11
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
12
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
13
【Excel VBA】書き込み先のシートが存在しなかった場合、新規でシート作成する方法
Visual Basic(VBA)
-
14
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
15
マクロ オートフィルタの検索値を所定のセルから参照
Excel(エクセル)
-
16
【VBA】2つのシートの値を比較して条件一致したら、同じ行の隣の値を別ブックへ転記したいです。 VB
Visual Basic(VBA)
-
17
別ブックをダイアログボックスで指定してそこにあるシートをコピーしたい
Excel(エクセル)
-
18
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
19
名前をつけて保存した後、元のファイルに戻るには
その他(コンピューター・テクノロジー)
-
20
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
特定の文字を含むシートだけマ...
-
エクセルのシート名変更で重複...
-
【ExcelVBA】全シートのセルの...
-
XL:BeforeDoubleClickが動かない
-
VBAで同じシート名のコピー時は...
-
Excel複数シートを別ブックに値...
-
ユーザーフォームに入力したデ...
-
VBA ユーザーフォーム上のチェ...
-
実行時エラー'1004': WorkSheet...
-
ExcelのVBAのマクロで他のシー...
-
VBAをMACで使えるようにしたい&...
-
セルのコピーで「オブジェクト...
-
エクセル・マクロ シートの非...
-
実行時エラー1004「Select メソ...
-
【Excel VBA】シート表示、非表...
-
Excel VBA リンク先をシート...
-
EXCELVBAを使ってシートを一定...
-
VBA yがシート名の時Sheets(...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelマクロのエラーを解決した...
-
特定の文字を含むシートだけマ...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
excelのマクロで該当処理できな...
-
実行時エラー'1004': WorkSheet...
-
ブック名、シート名を他のモジ...
-
実行時エラー1004「Select メソ...
-
VBA 存在しないシートを選...
-
ExcelVBA:複数の特定のグラフ...
-
エクセルのシート名変更で重複...
-
IFステートの中にWithステート...
-
VBA 検索して一致したセル...
-
ExcelのVBAのマクロで他のシー...
-
XL:BeforeDoubleClickが動かない
-
別のシートから値を取得するとき
-
エクセルVBA Ifでシート名が合...
-
エクセル・マクロ シートの非...
-
シートが保護されている状態で...
-
シート削除のマクロで「delete...
おすすめ情報
自己解決下でしょうか。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