元号を分解して表示する

ラボ

はじめに

 Format関数を使えば日付を元号表記にする事ができます。
 ただ、3つ目のように元号を1文字づつ分けて表記する事はできません。
 
 表題などを自動で表記させる際に、空白を挟みたい事もあると思いますので、その方法を解説します。

一旦文字列を作ってから分解する

 まずはFormat関数を使って元号表記の文字列を作成します。
 その後、文字列を分解して、空白を挟み込みながら結合すれば良いでしょう。
 
 文字列を分解するには、Mid関数を使用します。Mid関数は、文字列から指定した範囲の文字列を抽出します。範囲は開始位置と、抽出文字数で指定します。引数は以下の通りです。
 
  Mid(文字列,開始位置,抽出文字数

Sub test1()
    Dim str As String
    str = Format(#1/1/2024#, "ggge年")    '令和6年

    Dim i As Long
    Dim str2 As String
    For i = 1 To Len(str)
        str2 = str2 & Mid(str, i, 1)   '1文字づつ取り出す
        If i < Len(str) Then
            str2 = str2 & " "     '空白を挟み込む
        End If
    Next i
    
    Debug.Print str2
End Sub 

 最初にFormat関数で空白を含まない文字列を作ります。
 
 続いて、1文字目から最後まで文字列を取り出し、空白を挟みながら結合していきます。
  If i < Len(str) Then の部分は、最後に空白を加えないために付けています。

 結果は 「令 和 6 年」 となります。

 これでは、数値のみ半角なのでバランスが悪いと感じるなら全体を全角文字に変換する事もできます。
 その場合は、StrConv関数を使います。

Sub test2()
    Dim str As String
    str = StrConv(Format(#1/1/2024#, "ggge年"), vbWide)   '令和6年

    Dim i As Long
    Dim str2 As String
    For i = 1 To Len(str)
        str2 = str2 & Mid(str, i, 1)
        If i < Len(str) Then
            str2 = str2 & " "
        End If
    Next i
    
    Debug.Print str2   ' 「令 和 6 年」 

End Sub 

まとめ

 Format関数では日付から元号表記を取り出す事が可能ですが、元号と年数を切り分ける事はできても、元号自体を分割させることはできません。
 そこで、一旦文字列にしてMid関数で分解してやれば元号の間にスペースを置く事が出来るようになります。

 表題などでこのような表記が必要な場合は、お役立てください。


コメント

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