VBAで日付を扱っていると、次のようなことはありませんか?
- 「1月」を「January」のように表示したい
- 月を英語表記にしたい
- レポート用に見やすくしたい
このような場合は、MonthName関数を使うことで解決できます。
月の数値(1〜12)から月名(英語)を取得できる便利な関数です。
この記事では、MonthNameの基本から実務での活用方法まで分かりやすく解説します。
この記事でできること
- 月番号から月名を取得できる
- 英語表記の月を扱える
- 実務で使える表示方法が分かる
基本:MonthName関数の使い方
基本構文はこちらです。
MonthName(月, [省略形])
- 月 → 1〜12
- 省略形 → True(省略)/ False(通常)
例:
MsgBox MonthName(1)
→ January
MonthName関数の特徴
- 月番号から英語の月名を取得
- 省略形(Janなど)にも対応
基本例
Dim mName As String
mName = MonthName(5)
MsgBox mName
→ May
省略形で取得する
MsgBox MonthName(5, True)
→ May(短縮形)※Mayは同じですが、他は変わります
MsgBox MonthName(9, True)
→ Sep
Month関数と組み合わせる
現在の月を英語で表示できます。
MsgBox MonthName(Month(Date))
→ 今月の英語表記
セルに表示する
Range("A1").Value = MonthName(Month(Date))
日本語で表示したい場合
MonthNameは英語固定のため、日本語は自作します。
Function GetMonthJP(m As Integer) As String
Dim arr
arr = Array("1月", "2月", "3月", "4月", "5月", "6月", _
"7月", "8月", "9月", "10月", "11月", "12月")
GetMonthJP = arr(m - 1)
End Function
使用例:
MsgBox GetMonthJP(5)
→ 5月
実務での活用例
- 英語レポート作成
- 海外向けデータ表示
- 月別ラベル作成
- グラフや資料の見た目改善
特に海外向け資料で活躍します。
注意点
① 1〜12以外はエラー
MonthName(13)
→ エラーになります。
② 英語固定
環境に関係なく英語で返ります。
安全な書き方(おすすめ)
Dim m As Integer
m = Month(Date)
If m >= 1 And m <= 12 Then
MsgBox MonthName(m)
End If
よくあるエラーと対処法
① 値が範囲外
1〜12の範囲か確認してください。
② 日本語にならない
MonthNameは英語専用です。
③ コードは正しいのにエラーになる
コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。
まとめ
- MonthNameは月名(英語)を取得する関数
- 省略形にも対応
- Month関数と組み合わせると便利
- 英語表示が必要な場面で活躍
MonthName関数を使いこなせるようになると、データ表示の幅が広がります。
特にレポートや資料作成で役立つので、ぜひ活用してみてください。

コメント