Accessで和歴7桁日付を扱う関数を作りました【和歴7桁→日付型編】

スポンサーリンク

【日付型→和歴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

前提条件

  • 和歴7桁日付を入力し、日付型で結果を返します。
  • 変換できない値が入力されたらNULLを返します。
  • 7桁以外の数値が入力されたらNULLを返します。

使用方法

早速、イミディエイトウィンドウでこの関数をテストしてみます。

イミディエイトウィンドウで関数のテストを行う

debug.Print と入力し、

イミディエイトウィンドウで関数のテストを行う

続けて JP7toWdate( と入力します。すべて半角です。

イミディエイトウィンドウで関数のテストを行う

日付を入力します。ここでは、2020年3月1日を和歴7桁日付で入力しますので、5020301 と入力してください。

イミディエイトウィンドウで関数のテストを行う

)を入力したら、Enterキーを押下してください。

次の行に 2020/3/1 と表示されましたか?

和歴7桁が、日付型に変換されました。

コメントをどうぞ!

タイトルとURLをコピーしました