• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:キャンセルボタンをクリックしたかどうかを取得したい)

キャンセルボタンをクリックしたかどうかを取得する方法

このQ&Aのポイント
  • Excel VBAのInputBoxを使用して、キャンセルボタンをクリックしたかどうかを取得する方法を紹介します。
  • InputBoxの戻り値が空文字列の場合、キャンセルボタンが押されたことを示します。
  • 条件分岐文を使って、戻り値が空文字列の場合にキャンセルが押されたことを判定し、それに応じた処理を行います。

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.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

xiqixtoggw1
質問者

お礼

ありがとうございました。

その他の回答 (3)

  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.3

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

xiqixtoggw1
質問者

お礼

ありがとうございました。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

#1です。 これね。 「これだとOKでもキャンセルでもメッセージが表示されます。 」 テキストボックスに何かを入力してOKを押せば入力した内容がaに返ってくるが、テキストボックスに何も入力しないでOKを押したり、Enterを押せば、aには""が返る。これは、キャンセルを押したときと同じなので、キャンセルを押されたというメッセージがでるのは仕方ない。InputBoxではOKとキャンセルとEnterを区別する方法はない。区別するなら、ユーザーフォームをつくってコマンドボタンで区別する。

xiqixtoggw1
質問者

お礼

ありがとうございました。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.1

Sub あああ() Dim a As String a = InputBox("文字を入れてください。") If a = "" Then MsgBox "キャンセルが押されました" Else MsgBox a End If End Sub

xiqixtoggw1
質問者

お礼

ありがとうございました。