
以下のコードにて、3つのメッセージボックスがあります
Ifステートメントの条件に満たさない場合は、メッセージボックスが表示されます
OK or キャンセル ボタンが出ます
キャンセルをクリックした場合に、マクロを終了して、エクセルに戻るには
どのようなコードにすれば良いでしょうか?
なお、戻るエクセルは、マクロが書いているエクセルブック・シートです(Thisbookです)
ヒントでも、新規コードでも、以下コード修正でもOKです
ご存じの方、ご教授をお願いします
(コード。教えてgooにて教授いただきながら作ったコードです)
Sub 名前を付けて別ファイル保存()
Dim filename3 As String
Dim filepath As String
Dim checkresult As Boolean
Dim wordCount As Long
Dim numberOfBytes As Long
Do
' ファイル名の入力を促す
filename3 = InputBox("ファイル名、半角数字3ケタを入力してください(例:01, 02, 11)")
' 半角数字3ケタかをチェック
checkresult = (Len(filename3) = 3 And IsNumeric(filename3))
If checkresult = False Then
'メッセージボックス
MsgBox "半角数字3ケタで入力してください。", vbExclamation
Else
'文字数を取得
wordCount = Len(filename3)
'バイト数を取得
numberOfBytes = LenB(StrConv(filename3, vbFromUnicode))
If wordCount <> numberOfBytes Then
'メッセージボックス
MsgBox "半角文字以外のが入力されています。半角文字で入力してください。", vbExclamation
checkresult = False
Else
' 保存先のファイルパスを作成
filepath = "C:\Users\user\Desktop\あ\" & "あいうえお" & filename3 & "_k" & ".xlsx"
' 同じファイル名が存在するか確認
If Dir(filepath) <> "" Then
'メッセージボックス
MsgBox "同じファイル名が存在します。別の番号を入力してください。", vbExclamation, vbExclamation
checkresult = False
Else
checkresult = True
End If
End If
End If
Loop Until checkresult = True ' 入力が正しい場合、ループを終了
' ファイルをコピーして保存
ThisWorkbook.Sheets("折衝入力").Copy
ActiveWorkbook.SaveAs filepath
End Sub
No.2ベストアンサー
- 回答日時:
キャンセルボタンを押した際にマクロを終了してエクセルに戻るようにするには、InputBoxでキャンセルがクリックされたかどうかを判定し、キャンセルがクリックされた場合にExit Subでマクロを終了させるコードを追加する必要があります。
以下に、修正したコードを示します。このコードでは、ユーザーがキャンセルをクリックした場合にマクロが終了し、エクセルに戻るようにしています。
Sub 名前を付けて別ファイル保存()
Dim filename3 As String
Dim filepath As String
Dim checkresult As Boolean
Dim wordCount As Long
Dim numberOfBytes As Long
Do
' ファイル名の入力を促す
filename3 = InputBox("ファイル名、半角数字3ケタを入力してください(例:01, 02, 11)")
' キャンセルがクリックされた場合、マクロを終了
If filename3 = "" Then
MsgBox "キャンセルが選択されました。マクロを終了します。"
Exit Sub
End If
' 半角数字3ケタかをチェック
checkresult = (Len(filename3) = 3 And IsNumeric(filename3))
If checkresult = False Then
' メッセージボックス
MsgBox "半角数字3ケタで入力してください。", vbExclamation
Else
' 文字数を取得
wordCount = Len(filename3)
' バイト数を取得
numberOfBytes = LenB(StrConv(filename3, vbFromUnicode))
If wordCount <> numberOfBytes Then
' メッセージボックス
MsgBox "半角文字以外が入力されています。半角文字で入力してください。", vbExclamation
checkresult = False
Else
' 保存先のファイルパスを作成
filepath = "C:\Users\user\Desktop\あ\" & "あいうえお" & filename3 & "_k" & ".xlsx"
' 同じファイル名が存在するか確認
If Dir(filepath) <> "" Then
' メッセージボックス
MsgBox "同じファイル名が存在します。別の番号を入力してください。", vbExclamation
checkresult = False
Else
checkresult = True
End If
End If
End If
Loop Until checkresult = True ' 入力が正しい場合、ループを終了
' ファイルをコピーして保存
ThisWorkbook.Sheets("折衝入力").Copy
ActiveWorkbook.SaveAs filepath
End Sub
この修正点は以下の通りです:
InputBoxでファイル名を入力する部分の後に、キャンセルがクリックされた場合(filename3が空文字の場合)に、メッセージを表示し、Exit Subでマクロを終了します。
No.3
- 回答日時:
StrPtr関数を使うのが定番でしょう。
filename3 = InputBox("ファイル名、半角数字3ケタを入力してください(例:01, 02, 11)")
If StrPtr(filename3) = 0 then
Exit Sub 'キャンセルボタンがクリックされたときの処理
Else
'OKボタンがクリックされたときの処理
End If
「VBA InputBox キャンセル」で探すとサンプルがすぐ見つかりますよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
excelVBAについて。
Excel(エクセル)
-
【マクロ】複数の日付データをYYYY/MM/DDに読替えて、別ブックへ転記したい
Excel(エクセル)
-
excelVBAについて。
Excel(エクセル)
-
-
4
excelVBAについて。
Excel(エクセル)
-
5
フィルターをかけた時の、別の列に書いてある数字の表に現れた数量のみを表す式を教えてください。
Excel(エクセル)
-
6
【再投稿】レイアウトが異なる別のワークブックからデータを転記する方法を教えてください
Excel(エクセル)
-
7
excelVBAについて。
Excel(エクセル)
-
8
UNIQUE関数、配列数式を使わずに品名ごとの集計を求めたい
Excel(エクセル)
-
9
エクセルの関数ついて
Excel(エクセル)
-
10
excelVBAについて。
Excel(エクセル)
-
11
エクセルで作成した書類の印刷について
Excel(エクセル)
-
12
excelですが一つのマスに入ってる文字を2つのマスに変更できますか
Excel(エクセル)
-
13
年間の医療費のデータがあり、月々の集計をする計算式を教えていただけませんか
Excel(エクセル)
-
14
45490がどうして
Excel(エクセル)
-
15
条件付き書式の効率的な設定の仕方について
Excel(エクセル)
-
16
フィルター時の、別の列に書いてある数字の表に現れた個別の数字の数量のみを表す式を教えてください。
Excel(エクセル)
-
17
エクセル初心者です 用語とか良く分からないので簡単に説明していただけると幸いです 表を作っているので
Excel(エクセル)
-
18
エクセルのデータ整理の方法
Excel(エクセル)
-
19
エクセル初心者です 用語等まだ良く分からないので簡単に説明していただけると幸いです タブの挿入、図形
Excel(エクセル)
-
20
Excelで合計を求めたいです
Excel(エクセル)
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】【画像あり】4つの...
-
5単位で繰り上げしたい
-
Dir関数のDo Whileステートメン...
-
【マクロ】【画像あり】ファイ...
-
【マクロ】【画像あり】4つの...
-
9月17日でサービス終了らし...
-
【マクロ】エラー【#DIV/0!】が...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのリストについて
-
エクセルのdatedif関数を使って...
-
オートフィルターの絞込みをし...
-
【マクロ】数式を入力したい。...
-
【関数】同じ関数なのに、エラ...
-
空白のはずがSUBTOTAL関数でカ...
-
セルにぴったし写真を挿入
-
EXCELのVBAで複数のシートを追...
-
【マクロ】【画像あり】関数が...
-
エクセルシートの見出しの文字...
-
エクセルの関数について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルの関数について
-
【画像あり】オートフィルター...
-
エクセルのVBAで集計をしたい
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
エクセルの複雑なシフト表から...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】変数に入れるコード...
-
エクセルシートの見出しの文字...
-
【マクロ】別ファイルへマクロ...
-
【関数】同じ関数なのに、エラ...
-
Amazonでマイクロソフトオフィ...
-
ページが変なふうに切れる
おすすめ情報