以下のコードにて、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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) Excel VBA マクロ あるフォルダー内の複数のファイルを統合したいです 1 2024/02/19 21:37
- Visual Basic(VBA) wordのマクロで思うように行きません(ファイル削除ができない) 3 2023/09/12 08:34
- Visual Basic(VBA) xmlドキュメントから別拡張子で保存したい 4 2023/09/12 11:08
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/11/09 11:51
- Visual Basic(VBA) VBA 1 2024/02/03 22:51
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Visual Basic(VBA) エクセルVBAについて 1 2024/05/23 01:13
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) VBAの間違い教えて下さい 5 2024/08/03 21:35
このQ&Aを見た人はこんなQ&Aも見ています
-
カンパ〜イ!←最初の1杯目、なに頼む?
飲み会で最初に頼む1杯、自由に頼むとしたら何を頼みますか? 最初はビールという縛りは無しにして、好きなものを飲むとしたら何を飲みたいですか。
-
あなたにとってのゴールデンタイムはいつですか?
一週間の中でもっともテンションが上がる「ゴールデンタイム」はいつですか? その逆で、一週間でもっとも落ち込むタイミングでも構いません。 よかったら教えて下さい!
-
これが怖いの自分だけ?というものありますか?
人によって怖いもの(恐怖症)ありませんか? 怖いものには、怖くなったきっかけやエピソードがあって聞いてみるとそんな感覚もあるのかと新しい発見があって面白いです。
-
おすすめのモーニング・朝食メニューを教えて!
コメダ珈琲店のモーニング ロイヤルホストのモーニング 牛丼チェーン店の朝食などなど、おいしいモーニング・朝食メニューがたくさんありますよね。
-
タイムマシーンがあったら、過去と未来どちらに行く?
20XX年、ついにタイムマシーンが開発されました。 あなたは過去に行く? それとも未来? タイムマシーンにのって、どこに行って、何をしたいか教えてください!
-
excelVBAについて。
Excel(エクセル)
-
【マクロ】複数の日付データをYYYY/MM/DDに読替えて、別ブックへ転記したい
Excel(エクセル)
-
excelVBAについて。
Excel(エクセル)
-
-
4
フィルターをかけた時の、別の列に書いてある数字の表に現れた数量のみを表す式を教えてください。
Excel(エクセル)
-
5
excelVBAについて。
Excel(エクセル)
-
6
数字入力後他の文字等が表示される方法について
Excel(エクセル)
-
7
【再投稿】レイアウトが異なる別のワークブックからデータを転記する方法を教えてください
Excel(エクセル)
-
8
excelVBAについて。
Excel(エクセル)
-
9
excelVBAについて。
Excel(エクセル)
-
10
エクセルの関数ついて
Excel(エクセル)
-
11
UNIQUE関数、配列数式を使わずに品名ごとの集計を求めたい
Excel(エクセル)
-
12
下記マクロでMsgBox 空白です。"の部分の メッセージボックスは現れるものの 空白です。の文字"
Excel(エクセル)
-
13
【マクロ】Ifとwith ステートメントにて分からない部分があります
Excel(エクセル)
-
14
2列に入っているデータを1列で表示する関数について
Excel(エクセル)
-
15
Excelの数式の効率化について
Excel(エクセル)
-
16
【Excel】 1つのセルの日にちを4分割にしたい
Excel(エクセル)
-
17
(マクロ)値を返す時は subでもfunctionでもどちらでも良いのでしょうか?
Excel(エクセル)
-
18
Excelで、毎月の月曜と金曜の合計何日あるかを拾えるような関数ありますか?
Excel(エクセル)
-
19
エクセル初心者です 用語等まだ良く分からないので簡単に説明していただけると幸いです タブの挿入、図形
Excel(エクセル)
-
20
excelVBAについて。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~12/2】 国民的アニメ『サザエさん』が打ち切りになった理由を教えてください
- ・ちょっと先の未来クイズ第5問
- ・【お題】ヒーローの謝罪会見
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで作成した書類の印刷...
-
スプレッドシートで適切な条件...
-
Excelについて。 以前、無料でE...
-
エクセルのCOUNTAについて
-
Excel初心者です、Excelの日付...
-
エクセルで作成した表の中にあ...
-
新規ブックの作成について。
-
Excelの警告について
-
Excelの質問です。 特定のセル...
-
ExcelVBAについて。
-
標準、数値、文字列・・・VLOOK...
-
エクセルのデータ整理
-
Excelの質問です。 セルA1に文...
-
excelVBAについて。
-
excelVBAについて。
-
excelですが一つのマスに入って...
-
excelVBAについて。
-
excelVBAについて。
-
excelVBAについて。
-
パソコンで作成したExcelをiPho...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの警告について
-
excelVBAについて。
-
excelVBAについて。
-
UNIQUE関数、配列数式を使わず...
-
エクセルのデータ整理の方法
-
11ケタの数字を打つと、エク...
-
エクセルの関数ついて
-
エクセル初心者です 用語とか良...
-
エクセル2021 範囲指定印刷をす...
-
【マクロ】メッセージボックス...
-
Excelで合計を求めたいです
-
IEを使わずHTMLを取得する
-
1.5ヶ月分の費用按分 エクセル関数
-
エクセル初心者です 用語等まだ...
-
excelVBAについて。
-
エクセルの不調について
-
Excelで、毎月の月曜と金曜の合...
-
vbe でのソースコード参照(msgb...
-
エクセル数式に問題があります
-
アクセス2016 エクセル2016 重...
おすすめ情報