• 締切済み

エクセルのマクロについて

エクセルでマクロを作成しました。 インプットボックスに日付を入力するのですが、インプットボックスのキャンセル時に、マクロを停止したいのですが、色々試しましたが、上手く出来ません。(IfやOn Erorrなど)どの様な方法があるでしょうか? 入力する日付は○/1と入力しています。 Dim a As Date a = InputBOx("日付を入力してください") この様なコードで開始しています。

みんなの回答

noname#187541
noname#187541
回答No.4

こんにちは。 InputBoxには関数とメソッドの2種類あります。 関数の場合、未入力でボタンをクリックすると、OKもキャンセルも同じ結果を返すようです。 なので、どちらのボタンをクリックしたのか判断できにくいと思います。 ところが、メソッドの場合はキャンセルをクリックするとFalseが返ってきます。(戻り値を入れる変数の型にもよります。) 今回の場合は、こちらの方が判断しやすいと思います。 Dim a As Variant a = Application.InputBox("日付を入力してください") If a <> False Then '日付の時の処理 Else MsgBox "キャンセルされました。" End If どうでしょうか。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 InputBox 関数は、古い方法(レガシー)ですから、現在のVBAでは、基本的には使わないようにします。 Application.InputBox (InputBox メソッド)を使います。 >インプットボックスのキャンセル時 InputBox 関数での Cancel は、見かけ上は、0と同じにように見えます。ただし、0とは違います。InputBox関数のCancel は、古い関数の 「StrPtr」を使いますが、今は、あまり使いません。 また、通常、 Dim a As Date とデータ型の宣言はしません。 簡単な例: Sub Test1()   Dim a As Variant   a = Application.InputBox("日付を入力してください。yyyy/mm/dd ", Type:=2)   If VarType(a) = vbBoolean Or a = "" Then     Exit Sub   End If   If Len(a) - Len(Replace(a, "/", "")) = 1 Then     a = Year(Date) & "/" & a   End If   If IsDate(a) Then     MsgBox Format$(a, "yyyy/MM/dd")   Else     MsgBox "日付ではありません。"   End If End Sub

  • FEX2053
  • ベストアンサー率37% (7992/21376)
回答No.2

InputBoxって、キャンセルでエラー吐きましたっけ? 確か空白文字列を送り出すだけだったかと・・・ (何も入力しないでo.k.した場合と同じ結果になる筈) ですので、 a = InputBox("日付を入力してください") if a<>"" then  '日付入力の場合の処理 else  '何も入力しなかった場合の処理 end if じゃないかと・・・。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

一例です。 Sub test01() Dim a As Date On Error GoTo line a = InputBox("日付を入力してください") On Error GoTo 0 '現在の処理 Exit Sub line: MsgBox "日付を認識できません。", vbCritical, "Σ( ̄ロ ̄lll)" End Sub

関連するQ&A

専門家に質問してみよう