教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 関数】Day関数の使い方を教えて!

構文

構文は以下の通りです。

Day(日付)

解説

Day関数は、日付を引数として受け取り、その日の日を返します。使い方は非常にシンプルで、Day関数に日付を指定するだけです。日付は、直接指定するか、変数やセル参照を利用することもできます。

使い方

使い方について幾つか紹介します。

サンプル1

セルA1に「2023/06/05」という日付が入力されている場合、以下のようにDay関数を使って日付の日部分を取得することができます。

Dim myDate As Date
Dim dayValue As Integer
myDate = Range("A1").Value
dayValue = Day(myDate)

この場合、dayValueには「5」という値が格納されます。

サンプル2

日付の曜日を判定することができます。例えば、特定の日付が平日か週末かを判定したい場合には、Day関数を使用して次のような条件分岐を行うことができます。

Dim myDate As Date
Dim dayOfWeek As Integer
myDate = Range("A1").Value
dayOfWeek = Weekday(myDate)
If dayOfWeek = 1 Or dayOfWeek = 7 Then
    MsgBox "週末です"
Else
    MsgBox "平日です"
End If

サンプル3

日付の加減算を行うこともできます。例えば、指定した日数だけ過去の日付や未来の日付を取得する場合には、Day関数を活用することができます。

Dim currentDate As Date
Dim pastDate As Date
Dim futureDate As Date
currentDate = Date ' 現在の日付を取得
pastDate = DateAdd("d", -7, currentDate) ' 現在の日付から7日前の日付を取得
futureDate = DateAdd("d", 7, currentDate) ' 現在の日付から7日後の日付を取得
MsgBox "現在の日付: " & Format(currentDate, "yyyy/mm/dd")
MsgBox "過去の日付: " & Format(pastDate, "yyyy/mm/dd")
MsgBox "未来の日付: " & Format(futureDate, "yyyy/mm/dd")

上記の例では、DateAdd関数を使用して日付の加減算を行っています。第1引数には操作対象となる要素を指定し、「d」は日単位の操作を表しています。第2引数には加減算したい日数を指定し、第3引数には基準となる日付を指定します。このようにして、過去の日付や未来の日付を取得することができます。

プログラミング例

以下に、Day関数のプログラミング例を示します。

プログラミング例1

Sub GetDay()
    Dim myDate As Date
    Dim dayResult As Integer
    myDate = DateSerial(2023, 6, 5) ' 2023年6月5日を指定
    dayResult = Day(myDate)
    MsgBox "日の結果は " & dayResult & " です。"
End Sub

このプログラムでは、指定した日付(2023年6月5日)の日を取得し、メッセージボックスで表示します。Day関数によって取得された結果は、整数型の変数(dayResult)に代入されています。

プログラミング例2

Sub GetToday()
    Dim todayDate As Date
    Dim dayResult As Integer
    todayDate = Date
    dayResult = Day(todayDate)
    MsgBox "今日の日は " & dayResult & " です。"
End Sub

このプログラムでは、現在の日付を取得し、その日の日を表示します。Date関数を使用することで、現在の日付を取得することができます。

まとめ

Day関数は、Excel VBAで日付の日を取得するための便利な関数です。日付を引数として与えることで、その日の日を取得することができます。