Day関数の使い方と注意点
Day関数は、指定した日付から「日(1日〜31日)」の部分だけを取得する関数です。
日付の「日」部分を整数で返します。
構文
Day(日付)
- 日付 : Date型の値、または日付として解釈可能な文字列
- 戻り値 : 指定した日付の「日」(Integer型。1〜31)
使用例
日付から「日」を取得する
Sub Sample()
Dim MyDate As Date
MyDate = #1/2/2025#
Debug.Print Day(MyDate)
End Sub
▶ 出力結果
2
Now関数の結果から日を取得する
Sub Sample()
Debug.Print Day(Now)
End Sub
▶ 出力結果(実行が1月2日の場合)
2
日によって処理を分ける
Sub Sample()
Dim TodayDay As Integer
TodayDay = Day(Date)
If TodayDay <= 15 Then
Debug.Print "月の前半です"
Else
Debug.Print "月の後半です"
End If
End Sub
▶ 出力結果(実行が1月2日の場合)
月の前半です
⚠️注意
文字列を渡す場合は、日付として解釈できる形式にする必要がある
Sub Sample()
On Error Resume Next
Err.Clear
Debug.Print Day("2025.07.09") ' 区切り文字が不正
If Err.Number <> 0 Then Debug.Print "2025.07.09 : エラー:" & Err.Description
Err.Clear
Debug.Print Day("2025年13月1日") ' 13月は存在しない
If Err.Number <> 0 Then Debug.Print "2025年13月1日 : エラー:" & Err.Description
Err.Clear
Debug.Print Day("2025/07/32") ' 日付が存在しない
If Err.Number <> 0 Then Debug.Print "2025/07/32 : エラー:" & Err.Description
Err.Clear
Debug.Print Day("07-2025-09") ' 順序・区切りが不正
If Err.Number <> 0 Then Debug.Print "07-2025-09 : エラー:" & Err.Description
Err.Clear
Debug.Print Day("明日") ' 自然言語は無効
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(Day(Now), "00")
End Sub
▶ 出力結果(2日の場合)
02
関連するVBA関数
その他のVBA関数
【Excel VBA】VBAでよく使う関数一覧&基本の使い方