2

VBA コードに、テキスト ボックスに特定の日付形式を設定する関数があります。

これは、日付が正しい形式であることを確認するための私のコードです:

Function CheckDate(DateStg As String) As Boolean

If DateStg = "" Then
  ' Accept an empty value in case user has accidentally moved to a new row
  CheckDate = True
  lblMessage.Caption = ""
  Exit Function
End If

If IsDate(DateStg) Then
  CheckDate = True
  lblMessage.Caption = ""
Else
  CheckDate = False
  lblMessage.Caption = "Sorry I am unable to recognise " & DateStg & " as a date."
End If

End Function

テキスト ボックス内の日付が実際の日付であるかどうかを確認することに加えて、テキスト ボックスの日付が現在の日付から 1 か月を引いた日付よりも小さくないことを確認する必要があります。また、日付が現在の日付に 1 年を加えた日付を超えていないことを確認したいと思います。

そう:

  • DateStg > 今日 - 1 か月
  • DateStg < 今日 + 1 年

事前にご協力いただきありがとうございます。

4

2 に答える 2

3

使用できる関数がいくつかあります。

''Assume date is not good
DateOK=False
If IsDate(DateStg) Then
     If DateStg > dateAdd("m",-1,Date()) _
         And DateStg < dateAdd("m",12,Date()) Then
        ''Date is good
        DateOK=True
     End If
End if

ほとんどの場合、テキストボックスは日付のみを受け入れるように設定でき、範囲をチェックする検証ルールを設定できるため、コードは必要ない場合があります。

于 2012-08-15T14:59:26.387 に答える
1

日付だけを確認したい場合は、DateAdd 関数を使用して比較する日付を取得できます。

'Subtract a month from today and return it as a string
Format(DateAdd("m", -1, Now), "yyyy-mm-dd")

'Add a year to today and return it as a string
Format(DateAdd("yyyy", 1, Now), "yyyy-mm-dd")
于 2012-08-15T10:35:49.380 に答える