VBA関数のMonthName関数を使用して、指定した数値を月名に変換する方法をご説明します。
なかなか文字列表記で月名を扱う機会は少ないですが、フォーマット上で年と月が分かれていたりする場合などに使用すると便利です。
また、月別に集計する場合等に使用する等集計ロジックを簡素にする場合にも役立ちます。
2019/1/1のような通常の日付の中から月名に変換する方法も併せてサンプルコードで記載しています。
とはいってもこの関数を知らなくとも、「数値 & “月”」などで対応可能ではあります。
1.MonthName関数の使い方
MonthName関数は指定した数値を文字列の月名に変換します。
次のように記述します。
MonthName(month[,abbreviate])
「month」には月名に変換したい数値を指定します。
「abbreviate」は省略可能で、月名を省略するかTrue/Falseで指定します。
省略すると、既定値のFalseとなり月名は省略されません。
月名に変換する関数で、月名を省略する事はないと思いますので基本的には省略して構いません。
1~12以外の数値を指定するとエラーとなりますのでご注意ください。
2.サンプルコード
コードは非常に簡単です。
Sub Sample1()
Debug.Print MonthName(1) '1月
Debug.Print MonthName(2) '2月
Debug.Print MonthName(3) '3月
Debug.Print MonthName(4) '4月
Debug.Print MonthName(5) '5月
End Sub
さすがに12か月分すべて表示する場合はループを使用した方がいいと思いますので、次のようになります。
Sub Sample2()
Dim i As Integer
For i = 1 To 12
Debug.Print MonthName(i)
Next i
End Sub
次は通常の日付から月部分を指定して、月名に変換する方法です。
下記コードは9月を返します。
Sub Sample3()
Dim MyDate As Date
MyDate = "2019/9/10"
Debug.Print MonthName(Month(MyDate))
End Sub