- ベストアンサー
キャンセルボタンをクリックしたかどうかを取得する方法
- Excel VBAのInputBoxを使用して、キャンセルボタンをクリックしたかどうかを取得する方法を紹介します。
- InputBoxの戻り値が空文字列の場合、キャンセルボタンが押されたことを示します。
- 条件分岐文を使って、戻り値が空文字列の場合にキャンセルが押されたことを判定し、それに応じた処理を行います。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
VBA のInputBoxなら下記で確認してみてください。 Excel 2002、2010 + 32bit Excel2013 + 64bit(試用版) でも動きましたので当分の間は大丈夫かと思います (^^ゞ Sub cancelTest() Dim myRes As String Do myRes = InputBox("なあに?") If StrPtr(myRes) = 0 Then MsgBox "キャンセルした" Exit Sub ElseIf Len(myRes) = 0 Then MsgBox "からっぽ。何か入れて" Else MsgBox myRes Exit Do End If Loop End Sub
その他の回答 (3)
- m3_maki
- ベストアンサー率64% (296/460)
VB の InputBox 関数ではなく Excel の InputBox メソッド を使えば 区別できます。 引数にも違いがありますので、 詳しくは、ヘルプでご確認ください。 Sub あああ() Dim a As Variant ' False が入る場合があるので Variant 型 にする a = Application.InputBox("文字を入れてください。", "タイトル") If a = False Then MsgBox "キャンセルが押されました" Else MsgBox a End If End Sub
お礼
ありがとうございました。
- okormazd
- ベストアンサー率50% (1224/2412)
#1です。 これね。 「これだとOKでもキャンセルでもメッセージが表示されます。 」 テキストボックスに何かを入力してOKを押せば入力した内容がaに返ってくるが、テキストボックスに何も入力しないでOKを押したり、Enterを押せば、aには""が返る。これは、キャンセルを押したときと同じなので、キャンセルを押されたというメッセージがでるのは仕方ない。InputBoxではOKとキャンセルとEnterを区別する方法はない。区別するなら、ユーザーフォームをつくってコマンドボタンで区別する。
お礼
ありがとうございました。
- okormazd
- ベストアンサー率50% (1224/2412)
Sub あああ() Dim a As String a = InputBox("文字を入れてください。") If a = "" Then MsgBox "キャンセルが押されました" Else MsgBox a End If End Sub
お礼
ありがとうございました。
お礼
ありがとうございました。