0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Excel VBA】Month関数|日付から「月」を取り出す方法と注意点

Last updated at Posted at 2025-07-09

この記事ではMonth関数の使い方と注意点について解説します。
他のよく使うVBA関数一覧はこちら。

Month関数の使い方と注意点

Month関数は、指定した日付から「月」の部分だけを取得する関数です。
1~12のいずれかの整数を返します。

構文

Month(日付)
  • 日付 : 日付を表すDate型の値、もしくは日付として解釈可能な文字列
  • 戻り値 : 指定した日付の「月」(Integer型。1~12)

使用例

日付から年を取得する

Sub Sample()
    Dim MyDate As Date
    MyDate = #1/2/2025#
    Debug.Print Month(MyDate)
End Sub

▶ 出力結果

1

Now関数の結果から月を取得する

Sub Sample()
    Debug.Print Month(Now)
End Sub

▶ 出力結果(1月の場合)

1

月によって処理を分ける

Sub Sample()
    Dim Mymonth As Integer
    Mymonth = Month(Date)

    Select Case Mymonth
        Case 1 To 3
            Debug.Print "第1四半期"
        Case 4 To 6
            Debug.Print "第2四半期"
        Case 7 To 9
            Debug.Print "第3四半期"
        Case 10 To 12
            Debug.Print "第4四半期"
    End Select
End Sub

▶ 出力結果(1月の場合)

1四半期

月名(1月、2月など)を取得する

月名を取得する場合にはMonthName関数を使います。

Sub Sample()
    Debug.Print MonthName(Month(Now))
End Sub

▶ 出力結果(1月の場合)

1

⚠️注意

文字列を渡す場合は、日付として解釈できる形式にする必要がある

次のような文字列はVBAが日付として解釈できずエラーになります

Sub Sample()
    On Error Resume Next

    Err.Clear
    Debug.Print Month("2025.07.09")    ' 区切り文字が不正
    If Err.Number <> 0 Then Debug.Print "2025.07.09 : エラー:" & Err.Description

    Err.Clear
    Debug.Print Month("2025年13月1日") ' 13月は存在しない
    If Err.Number <> 0 Then Debug.Print "2025年13月1日 : エラー:" & Err.Description
    
    Err.Clear
    Debug.Print Month("2025/07/32")    ' 日付が存在しない
    If Err.Number <> 0 Then Debug.Print "2025/07/32 : エラー:" & Err.Description
    
    Err.Clear
    Debug.Print Month("07-2025-09")    ' 順序・区切りが不正
    If Err.Number <> 0 Then Debug.Print "07-2025-09 : エラー:" & Err.Description
    
    Err.Clear
    Debug.Print Month("来月")          ' 自然言語は無効
    If Err.Number <> 0 Then Debug.Print "来年 : エラー:" & Err.Description
    
    On Error GoTo 0
End Sub

▶ 出力結果(実行が2025年の場合)

2025.07.09 : エラー:型が一致しません。
2025年13月1日 : エラー:型が一致しません。
2025/07/32 : エラー:型が一致しません。
07-2025-09 : エラー:型が一致しません。
来月 : エラー:型が一致しません。

上記ではエラー発生時にエラーを無視して次の処理を実行するよう記述していますが、
エラーを無視する記述が無い場合、エラー時に処理が止まってしまいます。
引数に渡す内容には注意しましょう。

戻り値に「前ゼロ」は付かない

戻り値は数値であり文字列ではないため前ゼロ(例:01)は付きません。
前ゼロを付けたい場合にはFormat関数を使用しましょう。

Sub Sample()
    Debug.Print Format(Month(Now), "00")
End Sub

▶ 出力結果(1月の場合)

01

関連するVBA関数

その他のVBA関数

【Excel VBA】VBAでよく使う関数一覧&基本の使い方

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?