
下の2つのエクセルVBAコードについて質問です。これはChatGPTにきいた結果のコードで、どちらも動作しました。
質問したい部分は下のコードのExit Subです。Exit Subは2回出てきますが、1回目の
Exit SubはFor Each sht In Worksheets・・・のひと塊の部分に呼応するもので理解できていますが、2回目のはどうしてあるのか、どこに呼応しているのかわかりません。
というのも、1つ目のコードには出てこないからです。
どなたか教えていただけないでしょうか?
Sub 予約表作成ChatGPT()
branch = Worksheets("予約").Range("C2").Value
Worksheets("予約表ひな形").Copy _
After:=Worksheets("予約表ひな形")
Worksheets(3).Name = branch
Worksheets(branch).Range("F3").Value = branch
rw = 5
LastRow = Worksheets("予約").Cells(Rows.Count, 3).End(xlUp).Row
For i = 5 To LastRow
If Worksheets("予約").Cells(2, 3).Value = _
Worksheets("予約").Cells(i, 3).Value Then
Worksheets(branch).Cells(rw + 1, 2).Value = _
Worksheets("予約").Cells(i, 1).Value
Worksheets(branch).Cells(rw, 2).Value = _
Worksheets("予約").Cells(i, 2).Value
Worksheets(branch).Cells(rw, 4).Value = _
Worksheets("予約").Cells(i, 4).Value
Worksheets(branch).Cells(rw + 1, 4).Value = _
Worksheets("予約").Cells(i, 5).Value
Worksheets(branch).Cells(rw + 2, 4).Value = _
Worksheets("予約").Cells(i, 6).Value
rw = rw + 3
End If
Next
End Sub
---------------------------------------------------------------------------------
Sub 予約表作成ChatGPT同名エラー()
On Error GoTo SheetExistsError
Dim branch As String
branch = Worksheets("予約").Range("C2").Value
' Check if sheet name already exists
For Each sht In Worksheets
If sht.Name = branch Then
MsgBox "同名のシートが既に存在します。処理を中止します。", vbExclamation, "エラー"
Exit Sub
End If
Next
Worksheets("予約表ひな形").Copy After:=Worksheets("予約表ひな形")
Worksheets(3).Name = branch
Worksheets(branch).Range("F3").Value = branch
Dim rw As Long, LastRow As Long
rw = 5
LastRow = Worksheets("予約").Cells(Rows.Count, 3).End(xlUp).Row
For i = 5 To LastRow
If Worksheets("予約").Cells(2, 3).Value = Worksheets("予約").Cells(i, 3).Value Then
Worksheets(branch).Cells(rw + 1, 2).Value = Worksheets("予約").Cells(i, 1).Value
Worksheets(branch).Cells(rw, 2).Value = Worksheets("予約").Cells(i, 2).Value
Worksheets(branch).Cells(rw, 4).Value = Worksheets("予約").Cells(i, 4).Value
Worksheets(branch).Cells(rw + 1, 4).Value = Worksheets("予約").Cells(i, 5).Value
Worksheets(branch).Cells(rw + 2, 4).Value = Worksheets("予約").Cells(i, 6).Value
rw = rw + 3
End If
Next
Exit Sub
SheetExistsError:
MsgBox "エラー:" & Err.Description, vbCritical, "エラー"
End Sub
No.4ベストアンサー
- 回答日時:
> On Error GoTo SheetExistsErrorの記述がなければ二つ目のExit Subは不要ですか?
こうしたとき。
■エラーが出た時
ラベル「SheetExistsError:」に飛ばなくなるので、
エラーで処理が中止しますよね。
■エラーがないとき
Sub 予約表作成ChatGPT同名エラー()
【処理】
’Exit Sub これが無いので、以降の処理も続く。
'↓これはあくまで GoTo で飛んでくる目印となるラベル。
SheetExistsError:
MsgBox "エラー:" & Err.Description, vbCritical, "エラー"
End Sub
となります。
【処理】が終わったあとExit Sub で終了しないので、
その後に書かれている、最後のエラー時に用意されていたMsgBoxまで表示されます。
実際はエラーは無いのに、ね。
No.3
- 回答日時:
エラーハンドラー(SheetExistsError)以降の処理を通過してしまったら
正常に寄りした後に通過したのか?
エラー発生で遷移させられたのか判別するの面倒くさいからでしょ?
No.2
- 回答日時:
Sub 予約表作成ChatGPT同名エラー()
'実行中にエラーがでたら、ラベル「SheetExistsError」に飛んでね
On Error GoTo SheetExistsError
【処理】
'一連の処理が終わったときに、終了するEnd Sub
Exit Sub
'処理途中でエラが出たらここから続ける
SheetExistsError:
MsgBox "エラー:" & Err.Description, vbCritical, "エラー"
'エラーで飛んできたときにたどり着くEnd Sub
End Sub
って感じでわかるかな??
1つ目に無いのは、エラーの発生を想定していない、もしくはエラー処理まで考慮していないから。
ありがとうございます。
今パソコンのないところで使えませんが、もし
On Error GoTo SheetExistsErrorの記述がなければ二つ目のExit Subは不要ですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
風俗店を予約する際について 一...
-
総合病院にかかる場合は紹介状...
-
運転免許証を初めて更新します
-
ホットペッパービューティーで...
-
サンリオピューロランドの株主...
-
美容院でカット、カラーの予約...
-
企業説明会へ2回参加したいと思...
-
Accessで予定表を作成しようと...
-
人数様?
-
美容院の予約内容(メニュー)は...
-
同業他社に予約状況を知られな...
-
メンズエステって何きっかけで...
-
ドコモショップの来店予約 家族...
-
仕事してて思ったんだけど、「...
-
歯医者って治療は全て終わった...
-
サツキとメイの家の予約につい...
-
2回目デート直前にLINE減る。
-
紳助の大阪・心斎橋の店「はせ...
-
エステの予約をすっぽかしてし...
-
予約票忘れた
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ホットペッパービューティーで...
-
風俗店を予約する際について 一...
-
美容院でカット、カラーの予約...
-
ドコモショップの来店予約 家族...
-
人数様?
-
美容院の予約内容(メニュー)は...
-
2回目デート直前にLINE減る。
-
シートを選択して、1つのPDFに...
-
本屋での本の予約なんですが、 ...
-
Accessで予定表を作成しようと...
-
企業説明会へ2回参加したいと思...
-
初診で皮膚科に行く時に受付で...
-
ホットペッパーの美容院の予約...
-
なぜExit Subがあるのかわかり...
-
ラウンドワン[ROUND1] PC団体予...
-
同棲している彼とのペースがあ...
-
『予約優先』『予約制』『完全...
-
歯医者って治療は全て終わった...
-
取消・予約の繰り返して2月ま...
-
昨日仕事が休みだったので車の...
おすすめ情報