【日付型→和歴7桁編】からの続きです。
和歴7桁の日付を日付型に変換する関数
令和2年3月1日を和歴7桁で表すと、5020301です。
では逆に、5020301を日付型に変換する関数を紹介します。
なお、この関数も、前回の記事で作成した元号管理テーブルを、引き続き使用します。
Function JP7toWdate(wareki7 As Variant) As Variant '変数を定義 '元号の開始年を格納する変数 Dim Gengo_FR As String '元号の開始年から何年加算するか格納する変数 Dim Nensu As Long '初期化 JP7toWdate = Null '空白値又はNULL値が入力されたときは処理を中止(NULL値が返る) If wareki7 = "" Or IsNull(wareki7) Then Exit Function '7桁以外の数値が入力されたときは処理を中止(NULL値が返る) If Not Len(wareki7) = 7 Then Exit Function If Not IsNumeric(wareki7) Then Exit Function '左1桁から元号の開始年を検索する Gengo_FR = Left(Nz(DLookup("元号FR", "元号管理", "元号CD=" & CLng(Left(wareki7, 1))), 0), 4) '開始年が取得できなかった場合、処理を中止(NULL値が返る) If Gengo_FR = 0 Then Exit Function '左2桁目、3桁目から元号の開始年から何年加算するか計算する Nensu = Mid(wareki7, 2, 2) - 1 + Gengo_FR '戻り値に変換した日付をセットする(日付型) JP7toWdate = DateSerial(Nensu, Mid(wareki7, 4, 2), Mid(wareki7, 6, 2)) End Function
前提条件
使用方法
早速、イミディエイトウィンドウでこの関数をテストしてみます。
debug.Print と入力し、
続けて JP7toWdate( と入力します。すべて半角です。
日付を入力します。ここでは、2020年3月1日を和歴7桁日付で入力しますので、5020301 と入力してください。
)を入力したら、Enterキーを押下してください。
次の行に 2020/3/1 と表示されましたか?
和歴7桁が、日付型に変換されました。
コメントをどうぞ!