年月日順での日付チェック Hit Counter

対象バージョン : 97, 2000, 2002, 2003
最終更新日 : 2005/04/25 (オリジナル作成日:1996/12/22)


概 要 

 書式に日付型が設定されているテキストボックスでは、Access の自動日付判別機能により、入力ミスがあっても、意図しない日付で入力されるケースがあります。

 これを防ぐため、書式を設定しないテキストボックスに "yy/mm/dd" 形式で入力し、この内容をユーザー定義関数によりチェックする方法です。

 テキストボックスの "BeforeUpdate/更新前処理" 等で、テキストボックスに入力された値を引数として与えます。

 

構 文

 IsDateJ(String)

 

解 説

IsDateJ 関数の戻り値は日付のシリアル値を示すバリアント型 (Variant)です。

IsDateJ 関数では次の引数を使用します。

引 数 内     容
String "yy/mm/dd" 形式の日付を表す文字列式

引数が不正な場合は、IsDateJ 関数は Null を返します。

 

ユーザー定義関数

【97 以前】
Function IsDateJ (Arg_Date) As Variant
Dim syy As String
Dim smm As String
Dim sdd As String
Dim syymmdd As Variant
Dim pos1 As Integer
Dim pos2 As Integer

If IsNull(Arg_Date) Then GoTo IsDateJ_err

pos1 = InStr(Arg_Date, "/")
If pos1 = 0 Then GoTo IsDateJ_err
syy = Left(Arg_Date, pos1 - 1)
pos2 = InStr(pos1 + 1, Arg_Date, "/")
If pos2 = 0 Then GoTo IsDateJ_err
smm = Mid(Arg_Date, pos1 + 1, pos2 - pos1 - 1)
sdd = Mid(Arg_Date, pos2 + 1)

On Error GoTo IsDateJ_err
syymmdd = DateValue(syy & "年" & smm & "月" & sdd & "日")

IsDateJ = syymmdd

Exit Function

IsDateJ_err:
IsDateJ = Null
Exit Function

End Function
【2000 以降】
Function IsDateJ(Arg_Date) As Variant
Dim ymd As Variant

If IsNull(Arg_Date) Then GoTo IsDateJ_err

ymd = Split(Arg_Date, "/")

If UBound(ymd) <> 2 Then GoTo IsDateJ_err

On Error GoTo IsDateJ_err
IsDateJ = DateValue(ymd(0) & "年" & ymd(1) & "月" & ymd(2) & "日")

Exit Function

IsDateJ_err:
IsDateJ = Null
Exit Function

End Function

改訂履歴


目次へ戻る