
単純な複数のシートを移動するマクロを作りたいのですが、そのうちの一つがない場合はその作業を飛ばして次に進むにはどう組めばよいでしょうか?
行いたい作業は複数の既存ファイルのシートの並び替えです。ファイルによってシートの数が違うため対応できるようにしたいです
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
VBA 存在しないシートを選択した時にエラーメッセージを表示するには?
Visual Basic(VBA)
-
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
-
4
VBAのオートフィルターで該当行がない場合に処理を止めたい
Excel(エクセル)
-
5
ファイルが見つからない時、スルーしたい。
Visual Basic(VBA)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
VBA 見つからなかった時の処理
Excel(エクセル)
-
8
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
9
同じ作業を複数のシートに実行させるにはどうしたらいいのでしょうか
Visual Basic(VBA)
-
10
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
11
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
12
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
13
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
14
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
15
エクセルVBA 「On Error GoTo 0」について
Excel(エクセル)
-
16
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
17
VBA Cのセルが空白でなかったら、Aのセルに順番に数値を入力
Visual Basic(VBA)
-
18
VBAで文字列を数値に変換したい
Excel(エクセル)
-
19
エクセル マクロ オートフィルの終点の指定について
Excel(エクセル)
-
20
特定の複数のシートに同じ処理をさせたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
excelのマクロで該当処理できな...
-
ユーザーフォームに入力したデ...
-
同じ作業を複数のシートに実行...
-
【Excel VBA】Worksheets().Act...
-
特定の文字を含むシートだけマ...
-
実行時エラー'1004': WorkSheet...
-
コマンドボタンをクリックでシ...
-
VBA 存在しないシートを選...
-
ブック名、シート名を他のモジ...
-
【ExcelVBA】全シートのセルの...
-
VBA 検索して一致したセル...
-
【エクセルVBA】「Protect User...
-
Excel VBA 複数行を数の分だけ...
-
Excelマクロのエラーを解決した...
-
シートが保護されている状態で...
-
VBAでオブジェクト変数にsetし...
-
エクセルVBAでダブルクリックを...
-
VBAで以下の処理をする方法があ...
-
ExcelのVBAのマクロで他のシー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
同じ作業を複数のシートに実行...
-
月ごとに作成している日報ファ...
-
excelのマクロで該当処理できな...
-
ブック名、シート名を他のモジ...
-
【ExcelVBA】全シートのセルの...
-
Excelの各シートを色ごとで分類...
-
実行時エラー'1004': WorkSheet...
-
特定の文字を含むシートだけマ...
-
VBA 存在しないシートを選...
-
ExcelのVBAのマクロで他のシー...
-
XL:BeforeDoubleClickが動かない
-
【Excel VBA】Worksheets().Act...
-
VBA 検索して一致したセル...
-
Excel VBA 複数行を数の分だけ...
-
Excel チェックボックスにチェ...
-
【VBA】指定した検索条件に一致...
-
エクセルのマクロでアクティブ...
-
Excelマクロのエラーを解決した...
おすすめ情報
自己解決下でしょうか。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