
下の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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
風俗店を予約する際について 一...
-
指名したのに
-
近くの心療内科で、診てもらう...
-
初診で皮膚科に行く時に受付で...
-
美容院の予約内容(メニュー)は...
-
ホットペッパーの美容院の予約...
-
人数様?
-
予約票忘れた
-
ホットペッパービューティーで...
-
婦人科受診
-
同棲している彼とのペースがあ...
-
サンリオピューロランドの株主...
-
総合病院にかかる場合は紹介状...
-
予約サイトでの受付は、仮受付...
-
日本一予約が取りにくい国民宿...
-
『予約優先』『予約制』『完全...
-
ドコモショップの来店予約 家族...
-
運転免許証を初めて更新します
-
歯医者って治療は全て終わった...
-
2回目デート直前にLINE減る。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
風俗店を予約する際について 一...
-
ホットペッパービューティーで...
-
美容院の予約内容(メニュー)は...
-
総合病院にかかる場合は紹介状...
-
運転免許証を初めて更新します
-
サンリオピューロランドの株主...
-
人数様?
-
2回目デート直前にLINE減る。
-
美容院でカット、カラーの予約...
-
ドコモショップの来店予約 家族...
-
同棲している彼とのペースがあ...
-
予約票忘れた
-
ホットペッパーの美容院の予約...
-
昨日仕事が休みだったので車の...
-
本屋での本の予約なんですが、 ...
-
取消・予約の繰り返して2月ま...
-
企業説明会へ2回参加したいと思...
-
Accessで予定表を作成しようと...
-
エステの予約をすっぽかしてし...
-
初診で皮膚科に行く時に受付で...
おすすめ情報