【VBA】Month関数の構文と使用例
更新日:2023/12/01
VBAのMonth関数は指定した日付の月を、1から12までの整数で返します。
ここでは、Month関数の構文と汎用的な使い方2つとExcelセルおよびAccessのフィールドから月を取得する方法の計4つの使用例を紹介します。
Month関数の構文
Month関数の構文は、次のようになっています。
Month( date )
- date:
Date関数等で取得した日付型(Variant/Date)または、日付を表す文字列または数式を指定。
Month関数の使用例
Month関数の使用例を4つ紹介します。
Date型から月を取得
Date型の変数からMonth関数を使用して月を取得するコード例です。
Sub monthSample1()
Dim date1 As Date, date2 As Date
' 現在の日付
date1 = Date
' 日付を指定
date2 = #10/10/2023#
Debug.Print date1 & " の月は " & Day(date1)
Debug.Print date2 & " の月は " & Day(date2)
End Sub
実行すると、イミディエイトウィンドウに次のような結果が表示されます。
2023/8/12 の月は 8
2023/10/10 の月は 10
月を2桁で取得
取得した月が1桁のとき、先頭を0で埋めて2桁で表示します。
Sub monthSample2()
Dim date1 As Date, date2 As Date
date1 = #5/21/2000#
date2 = #12/3/2023#
Debug.Print date1 & " の日付は " & Right("0" & Month(date1), 2)
Debug.Print date2 & " の日付は " & Right("0" & Month(date2), 2)
End Sub
次のコードで日付の日を2桁に整形しています。
Right("0" & Month(date2), 2)
これは、月の先頭に "0" を連結して、Right関数で右(後ろ)から2文字を切り出しています。
これにより、取得した月が1桁か2桁かに関わらず、2桁で取得できます。
上記コードの結果は、次のようになります。
2000/5/21 の日付は 05
2023/12/03 の日付は 12
Excelセルから月を取得
次のコードは、日付が入力されたセルからMonth関数で日付の月を取得しています。
Sub monthSample3()
Dim cell1 As Range, cell2 As Range
With Sheets("sheet1")
Set cell1 = Sheets("sheet1").Cells(2, 2)
Set cell2 = Sheets("sheet1").Cells(3, 2)
End With
cell1.Offset(0, 2).Value = Month(cell1.Value) & "月"
cell2.Offset(0, 2).Value = Month(cell2.Value) & "月"
End Sub
次のようなシートに対して上記のコードを実行します。
結果は次のようになります。
Accessで日付フィールドから月を取得
次のようなAccess上で作成したテーブルから日付型のフィールドデータを取得して、月を抜き出します。
Sub monthSample4()
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb()
Set rs = db.OpenRecordset("サンプルテーブル", dbOpenTable)
With rs
Do Until .EOF
Debug.Print .Fields("日付フィールド") & _
"⇒" & _
Month(.Fields("日付フィールド")) & _
"月"
.MoveNext
Loop
End With
rs.Close: Set rs = Nothing
Set db = Nothing
End Sub
実行すると、イミディエイトウィンドウに次のように表示されます。
2023/12/01⇒12月
2021/11/05⇒11月
1999/10/10⇒10月
1975/08/08⇒8月
更新日:2023/12/01
関連記事
スポンサーリンク
記事の内容について
こんにちはけーちゃんです。
説明するのって難しいですね。
「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。
裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。
掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。
ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php
このサイトは、リンクフリーです。大歓迎です。