年月日順での日付チェック |
対象バージョン : 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
改訂履歴