'現在の和暦を取得 Debug.Print Format(Now, "ggge")
'指定日付の和暦を取得 Debug.Print Format(#1/1/2019#, "ggge")
日付データから和暦を取得するには「Format」関数を使用します
関数の書式
引数(太字は必須引数)
(expression, format, firstDayOfWeek, firstWeekOfYear)
戻り値の型 variant型(string)
関数の解説
Format関数は、ワークシート関数のText関数と同じような目的で使用します
引数「expression」は変換元のデータを指定します、ここで指定したデータを次の引数で指定した形式に変換して返します
引数「format」が、変換後の表示形式になります
表示形式の指定は、「ggg」で元号を表示して「e」で和暦年数を表示しますのであわせて指定することで、元号と年数を指定することが出来ます
3つ目と4つ目の引数は週の設定のため、今回は使用しません
2つ目の例コードでは、指定日付を指定することで特定の年月日から和暦を取得します、使用例でいうと「平成31」が取得されます
なお、「ggg」の文字数で指定内容が変更されます
下記にコードと一緒に記載しておきますので、必要に合わせて利用してください
基本的には文字数だけの違いなので、トップのものからgを削ってもいいです
'現在の元号を取得 Debug.Print Format(Now, "ggg")
「令和」が取得されます
'現在の元号の1文字目のみ取得 Debug.Print Format(Now, "gg")
「令」が取得されます
'現在の元号のアルファベットを取得 Debug.Print Format(Now, "g")
「R」が取得されます
'現在の和暦年数を取得 Debug.Print Format(Now, "e")
「1」が取得されます
全て記事作成日の2019年12月12日時点で取得される内容です
元年表示について
また、もうあと半月で2019年も終わってしまいますが2019年の間は「令和1年」であり、元号を使用する場合は「令和元年」と「元年」表示をするのが一般的です
ただこれは表示形式の指定がありませんので、日付で条件分岐をさせて直接「1」を「元」に変換する必要があります
VBAであれば、この取得処理の前段階で指定日付を元に表示形式を分岐させればいいのですが、なんせあと半月だけなのでここにこそっとコードは置いておきます
'元年表示の分岐処理 If Date >= #1/1/2020# Then Debug.Print Format(Date, "ggge") Else Debug.Print Format(Date, "ggg元") End If
2020年の1月1日より前であれば元号の年数は取得せずに「元」表示としているだけです、2020年以前なので2018年もそれ以前も全て元年表示となるので使えるタイミングはそれほどありませんね
ちなみに、このコードは年月日のみを対象としているのでNow関数ではなくDate関数を使用して日付を取得しています
一応表示形式の条件分岐を行って、それぞれの形式に変換する表示形式の書き方がここのWebページにあります
「日本の年号変更と元号」-MicrosoftOffice サポートページ