『マクロについて』(rika) はじめてお世話になります。 ある表があり、A2へ日付を入力する時にinputboxを使いたいのですが、日付以外でも入力ができてしまい困っています。回避するにはどうすればよいのでしょうか。下記になります。 Dim i As Long Dim k As Variant On Error Resume Next Application.DisplayAlerts = False k = Application.InputBox("日付を入力して下さい", "日付入力", " yyyy / m / d") If VarType(k) = vbBoolean Then Exit Sub '日付以外の入力を拒否したい Range("A2").Value = k i = Application.InputBox("「1枚」で全ページが印刷されます", "印刷枚数指定") If i = False Then Exit Sub ActiveWindow.SelectedSheets.PrintOut copies:=i Application.DisplayAlerts = True マクロはまだ初心者なので達人の方々に是非教えてもらいたいと思います。 それ以外の部分は作動はするので私としてはいいのかなと思っていますが、修正すべき点があれば教えて下さい。 ---- Sub test() Dim dd As Variant dd = get_date If TypeName(dd) <> "Boolean" Then MsgBox Format(dd, "yyyy/m/d") Else MsgBox "キャンセルが押された" End If End Sub Function get_date() As Variant Dim gdate As Variant get_date = False gdate = 0 Do Until TypeName(gdate) = "Boolean" gdate = Application.InputBox("日付を入力して下さい", "日付入力", , , , , , 2) If TypeName(gdate) <> "Boolean" Then If IsDate(gdate) Then get_date = CDate(gdate) Exit Do Else MsgBox "日付指定が間違っています" End If End If Loop End Function この程度でいかがですか? このget_date関数は、日付の入力要求を行い、日付に変換可能な文字列は、 日付として返します(Date型)。キャンセルでFalseを返します。 (それ以外は、エラーメッセージを出し、再入力要求) よって、平成22年9月7日 もOKと判断しますけど・・・。 ichinose ichinose様 ありがとうございます。 ただ、私には難しくて…すみません。 できれば最初に書いたマクロをいかして、日付以外の入力をできないようにしたいのですが教えていただけないでしょうか。 ---- Do k = Application.InputBox("日付を入力して下さい", "日付入力", " yyyy / m / d") If VarType(k) = vbBoolean Then Exit Sub '日付以外の入力を拒否したい If IsDate(k) Then Range("A2").Value = k Exit Do End If Loop BJ BJ様 ありがとうございました。 求めていた形にできました。本当に感謝致します。