Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » VBAで月を英語表記に-Format関数

VBAで月を英語表記に-Format関数

「VBA month 英語表記」
という検索キーワードでのアクセスに気付きました。

VBAのMonth関数で、英語表記にするには、どうすればいいのかを探していらしたのでしょう。

ExcelにせよVBAにせよ、日付データの扱いに慣れていない方がやってしまう典型的な間違いのひとつです。

[スポンサードリンク]

Month関数で取得できるのは、月を表す数値だけです。
Month関数では、「Sep」や「September」といった英語表記にすることはできません。

月を英語表記にするサンプルマクロ

VBAで月を英語表記にしたい場合は、Format関数を使いましょう。

Sub 月を英語表記に()
 MsgBox Format(Date, "mmm") & ":""mmm""を指定"
 MsgBox Format(Date, "mmmm") & ":""mmmm""を指定"
End Sub

ワークシート関数のTEXTと同じく、第2引数に文字列「mmm」を指定すれば「Sep」のような省略された表記が、「mmmm」を指定すれば「September」のような表記が得られます。

Month関数は1から12までの整数を返す

「VBA month 英語表記」
を検索なさった方には、Month関数があくまでも「1」から「12」までの整数を返す関数であることを、確認してみることをおすすめします。

拙著『いちばんやさしいExcel VBAの教本』でも多用しているローカルウィンドウで、

『いちばんやさしいExcel VBAの教本』 p.111より
(『いちばんやさしいExcel VBAの教本』 p.111より)

Month関数の戻り値の型を確認しましょう。

Sub Month関数の戻り値を確認する()
 Dim tmp As Variant
 tmp = Month(Date)
End Sub

上記のSubプロシージャを作成して、メニュー[表示]-[ローカルウィンドウ]からローカルウィンドウを表示し、ショートカットキー[F9]でステップ実行してみます。

2018年9月7日に実行した場合、下図のように変数tmpには「9」が代入され、[型]覧にはIntegerと表示されています。

ローカルウィンドウ:VBA.Monthの戻り値

Month関数のヘルプに、

Returns a Variant (Integer) specifying a whole number between 1 and 12, inclusive, representing the month of the year.

と書かれているとおりです。

Month関数はNullを返すこともある

1から12の整数を返すならMonth関数は「As Integer」あるいは「As Long」と定義されていても良さそうですが、オブジェクトブラウザーの詳細ペインを確認すると「As 〇〇」といった記述がありません。

オブジェクトブラウザー:VBA.Month

つまりVariantを返すようになっています。
なぜだろうと疑問を持ってヘルプを読むと、

If date containsNull, Null is returned.

という記述があります。

これもローカルウィンドウで確認しましょう。
先のSubプロシージャの、
  tmp = Month(Date)
の行を、
  tmp = Month(Null)
にしてからステップ実行すると、

ローカルウィンドウ:VBA.Monthの戻り値がNullの場合

確かにNullが変数tmpに代入され、型もNullになっています。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » VBA関数 » VBAで月を英語表記に-Format関数

「VBA関数」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.