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