
単純な複数のシートを移動するマクロを作りたいのですが、そのうちの一つがない場合はその作業を飛ばして次に進むにはどう組めばよいでしょうか?
行いたい作業は複数の既存ファイルのシートの並び替えです。ファイルによってシートの数が違うため対応できるようにしたいです
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も見ています
-
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
オートフィルターをかけ、#N/A以外で絞込みするVBA記述をご教示ください
Excel(エクセル)
-
10
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
11
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
12
【Excel VBA】書き込み先のシートが存在しなかった場合、新規でシート作成する方法
Visual Basic(VBA)
-
13
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
14
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
15
もしセルが#N/A"なら~をする・・・には?"
Excel(エクセル)
-
16
マクロ オートフィルタの検索値を所定のセルから参照
Excel(エクセル)
-
17
ExcelVBAで、指定したシートに対して同じ処理を行いたい
Excel(エクセル)
-
18
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
19
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
20
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定の文字を含むシートだけマ...
-
ブック名、シート名を他のモジ...
-
前日の数量と当月の累計を一覧...
-
VBA 条件合致の場合、セルを別...
-
VBでEXCELのシートのコ...
-
VBAエクセルの非アクティブシー...
-
VB.net(2005)でエクセルの特定...
-
ハイパーリンクがうまくできま...
-
Excel VBA Dialogsheetの編集
-
シートモジュールからのErr.Rai...
-
セルのコピーで「オブジェクト...
-
VBA 指定した回数分、別シート...
-
エクセルVBA ListBoxの並び...
-
エクセルのシート名変更で重複...
-
エクセル VBA シートのコピー
-
VBAです。ユーザーフォームの表...
-
Excelマクロのエラーを解決した...
-
シート削除のマクロで「delete...
-
【VBA】特定のワードが入ってい...
-
マクロ(VBA)を用いて野球の打...
マンスリーランキングこのカテゴリの人気マンスリー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