
InputBoxでキャンセルしたら、キャンセルされましたと表示させたいのですが
どうも私のやってるサンプルはエクセル専用のようです。
http://www.moug.net/tech/exvba/0100036.html
自分なりに書き換えてみたのですが
キャンセルボタンを押しても無視されます。
Sub Sample()
Dim returnData As Variant
returnData = InputBox("データを入力してください")
If VarType(returnData) = vbBoolean Then
MsgBox "キャンセルされました"
Exit Sub
End If
MsgBox "処理を続行します"
End Sub
アクセスではできないのでしょうか?ご教授よろしくお願いします。
No.1ベストアンサー
- 回答日時:
次のようにしてキャンセル時の戻り値をチェックしてみました。
Option Compare Database
Dim Msg, Title, Default, MyValue
Private Sub コマンド4_Click()
Msg = "1 から 3 までの値を入力してください。"
Title = "InputBox デモ"
Default = "1"
MyValue = InputBox(Msg, Title, Default)
Debug.Print "MyValue=" & MyValue
Debug.Print "Len(MyValue)=" & Len(MyValue)
Debug.Print "IsNull(MyValue=" & IsNull(MyValue)
Debug.Print "IsEmpty(MyValue=" & IsEmpty(MyValue)
End Sub
[イミディエイトウインドウ]
MyValue=
Len(MyValue)=0
IsNull(MyValue=False
IsEmpty(MyValue=False
結果、Null でもなく空でもない長さが0の""が戻されていることが判ります。
このことから Len関数でのチェックが有効です。
Sub Sample()
Dim returnData As Variant
returnData = InputBox("データを入力してください")
If Len(returnData & "") = 0 Then
MsgBox "キャンセルされました"
Exit Sub
End If
MsgBox "処理を続行します"
End Sub
○If Len(returnData & "") = 0 Then
×If Len(returnData) = 0 Then
なお、Null値でもエラーがでないように○のやり方で通したがよいと思います。
No.5
- 回答日時:
No.4
- 回答日時:
補足のおまけです(蛇足かとは思いますが)
InputをLoopにしておいて~と書いたので一応つたないサンプルを。
Do
returnData = InputBox("データを入力してください")
If Len(returnData) = 0 Then
If MsgBox("キャンセルしてよろしいですか", vbYesNo) = vbYes Then
Exit Sub
End If
End If
Loop Until Len(returnData) > 0
No.2
- 回答日時:
上記のサイトの説明によると
ユーザーが [キャンセル] をクリックした場合、長さ 0 の文字列が返されます。
ということなので
If Len(returnData) = 0 Then
もしくはIf returnData = "" Then
MsgBox "キャンセルされました"
Exit Sub
END If
とかでいけるのではないでしょうか。
ただし、未入力でOKを押してもキャンセルと同じ扱いになりますので、未入力とキャンセルを分けたい場合には、入力用フォームを作成して対応するか、InputをLoopにしておいて、入力データがあるか、キャンセルもしくは未入力の場合はMsgBoxで再確認後にキャンセルでよければLoopを抜ける動作にするとかにしておくと良いのではないでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) InputBoxでキャンセルボタンを押したらファイル自体を閉じたい 3 2022/07/23 17:52
- Visual Basic(VBA) ExcelVBA No.を自動連番で設定をしながらデータ入力をしたい 2 2022/08/03 18:19
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) エクセルで、1つのセルで上書き足し算して セルの範囲を指定できますか? パソコン初心者です。 お時間 3 2023/07/05 06:13
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 空白のセルを変更しようとした時(アクティブセル)に インプットボックスを5回出す インプットボックス 1 2023/03/14 11:01
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
家電のキャンセルの理由を正直...
-
通販でキャンセルした商品が届...
-
友人と2人で行くはずの旅行を...
-
旅行のキャンセル料について相...
-
裏DVD
-
タイミーで応募キャンセルされ...
-
これってかなり迷惑でしょうか...
-
「参考になった」キャンセル方法
-
女友達が向こうから誘ってきた...
-
飲み会を当日キャンセルしたん...
-
ドタキャンの知人に飲み会のキ...
-
ジャンカラで支払いせず出てき...
-
友人(4人)との旅行当日体調不...
-
美容室でのネット予約を2日くら...
-
お葬式で旅行がキャンセルに
-
幹事での失敗。どうしたら・・・。
-
売買契約(買手側)の一方的破...
-
お取り置き商品のキャンセルに...
-
Application.Dialogs(xlDialogS...
-
ワイモバイルの8日間キャンセル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
旅行のキャンセル料について相...
-
通販でキャンセルした商品が届...
-
飲み会を当日キャンセルしたん...
-
友人と2人で行くはずの旅行を...
-
女友達が向こうから誘ってきた...
-
友人(4人)との旅行当日体調不...
-
美容室でのネット予約を2日くら...
-
タイミーで応募キャンセルされ...
-
confirm の OK、キャンセル ...
-
裏DVD
-
「参考になった」キャンセル方法
-
お葬式で旅行がキャンセルに
-
至急!詐欺の可能性がある裏DVD...
-
2回連続ママ友にドタキャンされ...
-
急に旅行に行けないかもしれな...
-
当日キャンセルしてしまった美...
-
飲み会、当日キャンセルの人へ...
-
ドタキャンの知人に飲み会のキ...
-
当日キャンセルした飲み会のキ...
-
前からの約束、当日に連絡がき...
おすすめ情報