[[20100906235929]] 『マクロについて』(rika) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロについて』(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様

ありがとうございました。
求めていた形にできました。本当に感謝致します。


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.