【VBA】日時曜日を得る関数【徹底解説】
このページでは、VBA言語で日付や時刻に関する情報を扱うための関数について、初心者向けに詳しく解説します。各関数の役割や使い方、具体的なコード例を交えながら説明していきます。
目次
- Year(date) : 年を得る
- Month(date) : 月を得る
- Day(date) : 日を得る
- Hour(date) : 時を得る
- Minute(date) : 分を得る
- Second(date) : 秒を得る
- Weekday(date, [firstdayofweek]) : 曜日を得る
- MonthName(month, [abbreviate]) : 月名を得る
- WeekdayName(weekday, abbreviate, firstdayofweek) : 曜日名を得る
Year(date) : 年を得る
Year(date)
関数は、指定した日付から年の部分だけを取り出して数値として返す関数です。
たとえば、システム日付や任意に設定した日付から「2025」などの年の情報を取得する場合に使用します。
例:
Dim myDate As Date myDate = #2025/02/13# MsgBox Year(myDate) ' 結果は 2025
このように、日付データから年だけを取り出すことで、年ごとの条件分岐や集計処理などに役立ちます。
Month(date) : 月を得る
Month(date)
関数は、指定した日付から月の部分を数値 (1~12) として返します。
月ごとの処理や表示の際に非常に便利です。
例:
Dim myDate As Date myDate = #2025/02/13# MsgBox Month(myDate) ' 結果は 2
例えば、特定の月にのみ実行する処理を作成する場合などに使用できます。
Day(date) : 日を得る
Day(date)
関数は、指定した日付から日(1~31)の部分を取り出し、数値として返します。
日付ごとの処理や表示に利用されます。
例:
Dim myDate As Date myDate = #2025/02/13# MsgBox Day(myDate) ' 結果は 13
日付の数値をもとに、例えば「毎月13日だけ処理を行う」などのロジックに役立ちます。
Hour(date) : 時を得る
Hour(date)
関数は、指定された日時から「時」の部分を抽出して返します。返される値は0~23の整数です。
時間に関連する処理や、特定の時間帯に合わせた処理を行う際に使います。
例:
Dim myDateTime As Date myDateTime = #2025/02/13 15:30:00# MsgBox Hour(myDateTime) ' 結果は 15
この関数は、例えば「午後の処理」「特定の時間帯にだけ動作するプログラム」などに利用できます。
Minute(date) : 分を得る
Minute(date)
関数は、指定された日時から「分」の部分を抽出し、0~59の数値として返します。
分単位の正確なタイミングが必要な場合に使用されます。
例:
Dim myDateTime As Date myDateTime = #2025/02/13 15:30:45# MsgBox Minute(myDateTime) ' 結果は 30
例えば、タイマー機能や分単位のログ記録などで、現在の分を取得する際に便利です。
Second(date) : 秒を得る
Second(date)
関数は、指定した日時から「秒」の部分を抽出し、数値 (0~59) として返します。
高精度な時間管理やタイミング調整に使用されます。
例:
Dim myDateTime As Date myDateTime = #2025/02/13 15:30:45# MsgBox Second(myDateTime) ' 結果は 45
秒単位での処理や、ストップウォッチ機能の実装など、細かい時間管理に役立ちます。
Weekday(date, [firstdayofweek]) : 曜日を得る
Weekday(date, [firstdayofweek])
関数は、指定した日付の曜日を数値として返します。
返される数値は通常、日曜日を 1、月曜日を 2 とする形で割り当てられていますが、オプションの引数 firstdayofweek
を使用すると、週の始まりを変更することが可能です。
例 1 (デフォルトの場合):
Dim myDate As Date myDate = #2025/02/13# MsgBox Weekday(myDate) ' 結果は 5 (日曜日=1, 月曜日=2, ... とすると、木曜日は5)
例 2 (週の始まりを月曜日に設定):
Dim myDate As Date myDate = #2025/02/13# MsgBox Weekday(myDate, vbMonday) ' 結果は 4 (月曜日=1, 火曜日=2, ... とすると、木曜日は4)
VBAでは、vbSunday
、vbMonday
などの定数が用意されており、これらを利用して週の始まりを指定することができます。
MonthName(month, [abbreviate]) : 月名を得る
MonthName(month, [abbreviate])
関数は、指定された月の数値に対応する月名(文字列)を返します。
第2引数の abbreviate
を True
に設定すると、短縮形(例:”Jan” や “Feb”)を返します。
例 1 (完全な月名):
MsgBox MonthName(2) ' 結果は "February" またはシステムのロケールにより "2月" となる
例 2 (短縮形):
MsgBox MonthName(2, True) ' 結果は "Feb" または対応する短縮形
数値をそのまま人が読みやすい形に変換できるので、カレンダー表示やレポート作成時に便利です。
WeekdayName(weekday, abbreviate, firstdayofweek) : 曜日名を得る
WeekdayName(weekday, abbreviate, firstdayofweek)
関数は、曜日の数値(通常は Weekday
関数で得た値)に対応する曜日名(文字列)を返します。
第2引数 abbreviate
を True
にすると短縮形を、また第3引数 firstdayofweek
を設定することで週の始まりを指定できます。
例 1 (完全な曜日名):
MsgBox WeekdayName(5) ' 結果は "Thursday" (日曜日が1の場合)
例 2 (短縮形 & 週の始まりを月曜日に指定):
MsgBox WeekdayName(5, True, vbMonday) ' 結果は "Thu" (月曜日が1の場合)
この関数は、曜日番号から直接分かりやすい曜日名に変換する際に活用できます。たとえば、カレンダー表示や曜日別の処理分岐に利用することができます。
以上の関数を組み合わせることで、VBAプログラム内で日付や時刻を柔軟に扱うことが可能になります。
たとえば、システム日付から現在の年月日、時刻を取得してログを作成したり、特定の曜日や時間帯に基づいて処理を実行したりするシナリオに非常に有用です。
ぜひ、実際のプロジェクトでこれらの関数を活用し、効率的で読みやすいコード作成に役立ててください。