AccessExcel

【VBA】Month関数の構文と使用例

更新日:2023/12/01

VBAのMonth関数は指定した日付の月を、1から12までの整数で返します。
ここでは、Month関数の構文と汎用的な使い方2つとExcelセルおよびAccessのフィールドから月を取得する方法の計4つの使用例を紹介します。

 

Month関数の構文

Month関数の構文は、次のようになっています。

Month( date )
  1. date:
    Date関数等で取得した日付型(Variant/Date)または、日付を表す文字列または数式を指定。
1から12までの整数

 

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

次のようなシートに対して上記のコードを実行します。

実行前 2000/11/10 2023/5/11

結果は次のようになります。

実行結果 11月 5月

Accessで日付フィールドから月を取得

次のようなAccess上で作成したテーブルから日付型のフィールドデータを取得して、月を抜き出します。

日付データ 2023/12/01 2021/11/05 1999/10/10 1975/08/08

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/01122021/11/05111999/10/10101975/08/088

更新日:2023/12/01

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。