VBA 日付に関する関数
In this Article
このチュートリアルでは、さまざまな組み込みの日付に関するVBA関数について説明します。
VBA Date関数
Date関数を使用すると、現在の日付を返すことができます。 Date関数の構文はDate()です。この関数には引数がありません。 次のコードは、Date 関数の使用方法を示しています。
Sub UsingTheDateFunction()
Dim theDate As Date
theDate = Date()
Debug.Print theDate
End Sub
イミディエイトウィンドウに表示される結果は、以下の通りです。
VBA Now関数
Now関数を使うと、現在の日付と時刻を返すことができます。 Now関数の構文はNow()です。この関数には引数がありません。 次のコードは、Now 関数の使用方法を示しています。
Sub UsingTheNowFunction()
Dim theDate As Date
theDate = Now()
Debug.Print theDate
End Sub
結果は次のようになります。
VBA Time関数
Time関数を使うと、現在の時刻を返すことができます。 Time 関数の構文はTime()です。引数はありません。 次のコードは、Time Functionの使い方を示しています。
Sub UsingTheTimeFunction()
Dim theTime As Date
theTime = Time()
Debug.Print theTime
End Sub
結果は次のようになります。
VBA DateAdd関数
DateAdd関数を使用すると、日付や時間の間隔を追加することができ、この関数は結果の日付や時間のシリアル値を返します。 DateAdd 関数の構文は次のとおりです。
DateAdd(Interval, Number, Date)
引数は以下のとおりです。
- Interval – 使用するインターバルの種類を指定する文字列。以下の値のいずれかを使用します。
“d” – 日
“ww” – 週
“w” – 平日
“m” – 月
“q” – 四半期
“yyyy” – 年
“y” – 西暦の日
“h” – 時
“n” – 分
“s” – 秒
- Number – オリジナルの日付/時刻に追加したいIntervalの数。
- Date – オリジナルの日付/時刻。
注:コード内で日付を使用する場合は、#または引用符で囲む必要があります。 次のコードは、DateAdd関数の使用方法を示しています。
Sub UsingTheDateAddFunction()
Dim laterDate As Date
laterDate = DateAdd("m", 10, "11/12/2019")
Debug.Print laterDate
End Sub
結果は次のようになります。
VBA DateDiff関数
指定した時間間隔で2つの日付の差分を取得するには、DateDiff関数を使用します。 DateDiff 関数の構文は次のとおりです。
DateDiff(Interval, Date1, Date2, [Firstdayofweek], [Firstweekofyear])
引数は以下のとおりです。
- Interval – 使用する間隔の種類を指定する文字列。以下の値のいずれかを使用します。
“d” – 日
“ww” – 週
“w” – 平日
“m” – 月
“q” – 四半期
“yyyy” – 年
“y” – 西暦の日
“h” – 時
“n” – 分
“s” – 秒
- Date1 – 前の日付を表す日付シリアル値。
- Date2 – 後の日付を表すシリアル値。
- Firstdayofweek(オプション) – この関数が週の最初の日として使用する曜日を指定する定数です。空白の場合は、日曜日が週の最初の日として使用されます。以下の値のいずれかを指定します。
-vbSunday – 日曜日を週の始まりとして使用します。
-vbMonday – 月曜日を週の始まりとして使用します。
-vbTuesday – 火曜日を週の始まりとして使用します。
-vbWednesday – 水曜日を週の始まりとして使用します。
-vbThursday – 木曜日を週の始まりとして使用します。
-vbFriday – 金曜日を週の始まりとして使用します。
-vbSaturday – 土曜を週の始まりとして使用します。
-vbUseSystemDayOfTheWeek – システムの設定により指定された週の最初の曜日を使用します。
- Firstweekofyear(オプション) – その年の最初の週を指定する定数です。空白の場合、1月1日の週がその年の最初の週として使用されます。以下の値のいずれかを指定します。
-vbFirstJan1 – 1月1日を含む週を使用します。
-vbFirstFourDays – 新しい年の少なくとも4日間を含む最初の週を使用します。
-vbFirstFullWeek – その年の最初の完全な週を使用します。
-vbSystem – システム設定によって指定された、その年の最初の週を使用します。
次のコードは、DateDiff関数を使用する方法を示しています。
Sub UsingTheDateDiffFunction()
Dim theDifferenceBetweenTwoDates As Long
theDifferenceBetweenTwoDates = DateDiff("q", "11/11/2010", "10/12/2012")
Debug.Print theDifferenceBetweenTwoDates
End Sub
結果は、以下のようになります。
VBA DatePart関数
指定した日付の一部(日、週、四半期、月など)を返すには、DatePart Functionを使用します。 DatePart関数の構文は次のとおりです。
DatePart(Interval, Date,[Firstdayofweek], [Firstweekofyear])
引数は以下のとおりです。
- Interval – 返すべき日付の部分を指定する文字列。以下の値のいずれかを指定します。
“d” – 日
“ww” – 週
“w” – 平日
“m” – 月
“q” – 四半期
“yyyy” – 年
“y” – 西暦の日
“h” – 時
“n” – 分
“s” – 秒
- Date – この関数で返したい日付の一部分。
- Firstdayofweek(オプション) – この関数が週の最初の日として使用する曜日を指定する定数です。空白の場合は、日曜日が週の最初の日として使用されます。以下の値のいずれかを指定します。
-vbSunday – 日曜日を週の始まりとして使用します。
-vbMonday – 月曜日を週の始まりとして使用します。
-vbTuesday – 火曜日を週の始まりとして使用します。
-vbWednesday – 水曜日を週の始まりとして使用します。
-vbThursday – 木曜日を週の始まりとして使用します。
-vbFriday – 金曜日を週の始まりとして使用します。
-vbSaturday – 土曜を週の始まりとして使用します。
-vbUseSystemDayOfTheWeek – システムの設定により指定された週の最初の曜日を使用します。
- Firstweekofyear(オプション) – その年の最初の週を指定する定数です。空白の場合、1月1日の週がその年の最初の週として使用されます。以下の値のいずれかを指定することができます。
-vbFirstJan1 – 1月1日を含む週を使用します。
-vbFirstFourDays – 新しい年の少なくとも4日間を含む最初の週を使用します。
-vbFirstFullWeek – その年の最初の完全な週を使用します。
-vbSystem – システム設定によって指定された、その年の最初の週を使用します。
Sub UsingTheDatePartFunction()
Dim thePartOfTheDate As Integer
thePartOfTheDate = DatePart("yyyy", "12/12/2009")
Debug.Print thePartOfTheDate
End Sub
結果は次のようになります。
VBA DateSerial関数
VBA DateSerial関数は、年、月、日の入力を受けて、日付のシリアル値を返します。 DateSerial 関数の構文は次のとおりです。
DateSerial(Year, Month, Day)
引数は以下のとおりです。
- Year- 100から9999までの年を表す整数値。
- Month – 月を表す整数値。
- Day – 日を表す整数値。
次のコードは、DateSerial 関数の使用方法を示しています。
Sub UsingTheDateSerialFunction()
Dim theDate As Date
theDate = DateSerial(2010, 11, 10)
Debug.Print theDate
End Sub
結果は次のようになります。
VBA DateValue関数
DateValue関数は、日付の文字列表現を指定すると、Date型の値を返します。 DateValue関数の構文は次のとおりです。
DateValue(Date)
引数は以下のとおりです。
- Date – 日付を表す文字列。
次のコードは、DateValue関数の使用方法を示しています。
Sub UsingTheDateValueFunction()
Dim theDate As Date
theDate = DateValue("October, 29, 2010")
Debug.Print theDate
End Sub
結果は次のようになります。
VBA 日関数
入力された日付の日のみを抜き出すには、Day関数を使用します。 Day 関数の構文は次のとおりです。
Day(Date_value)
引数は以下のとおりです。
- Date_value – 日を抽出するための日付。
次のコードは、Day 関数の使い方を示しています。
Sub UsingTheDayFunction()
Dim theDay As Integer
theDay = Day("10/12/2010")
Debug.Print theDay
End Sub
結果は次のようになります。
VBA Hour関数
Hour 関数は、入力された時刻の時間を返すために使用できます。 Hour関数の構文は次のとおりです。
Hour(Time)
引数は以下のとおりです。
- Time – 時刻を表す文字列。
次のコードは、Hour 関数の使用方法を示しています。
Sub UsingTheHourFunction()
Dim theHour As Integer
theHour = Hour("2:14:17 AM")
Debug.Print theHour
End Sub
結果は次のようになります。
VBA Minute関数
Minute関数を使うと、入力された時刻の分単位の値を返すことができます。 Minute 関数の構文は次のとおりです。
Minute(Time)
引数は以下のとおりです。
- Time – 分の値を抽出したい時刻。
次のコードは、Minute 関数 の使用方法を示しています。
Sub UsingTheMinuteFunction()
Dim theMinuteValue As Integer
theMinuteValue = Minute("2:14:17 AM")
Debug.Print theMinuteValue
End Sub
結果は次のようになります。
VBA Second関数
Second関数は、入力時間の秒単位の値を返すために使うことができます。 Second 関数の構文は次のとおりです。
Second(Time)
引数は以下のとおりです。
- Time – 秒の値を抽出したい時刻。
次のコードは、Second 関数の使用方法を示しています。
Sub UsingTheSecondFunction()
Dim theSecondValue As Integer
theSecondValue = Second("2:14:17 AM")
Debug.Print theSecondValue
End Sub
結果は次のようになります。
VBA Month関数
入力された日付の月を返すには、Month 関数を使用します。 Month 関数の構文は次のとおりです。
Month(Date_value)
引数は以下のとおりです。
- Date_value – 月を抽出したい日付。
次のコードは、Month 関数の使用方法を示しています。
Sub UsingTheMonthFunction()
Dim theMonth As Integer
theMonth = Month("11/18/2010")
Debug.Print theMonth
End Sub
結果は次のようになります。
VBA MonthName関数
MonthName関数を使うと、入力された月番号から月の名前を返すことができます。 MonthName 関数の構文は次のとおりです。
MonthName(Number_of_month, [Abbreviate])
引数は以下のとおりです。
- Number_of_month – 1から12までの整数値。
- Abbreviate(オプション) – 月名を省略するかどうかを指定します。空白の場合、デフォルト値のFalseが使用されます。
Sub UsingTheMonthNameFunction()
Dim theMonthNameT As String, theMonthNameF As String
theMonthNameT = MonthName(12, True)
theMonthNameF = MonthName(12)
Debug.Print theMonthNameT
Debug.Print theMonthNameF
End Sub
結果は次のようになります。
VBA TimeSerial関数
TimeSerial 関数は、時、分、秒を入力し、時刻のシリアル値を返します。 TimeSerial 関数の構文は次のとおりです。
TimeSerial(Hour, Minute, Second)
引数は以下のとおりです。
- Hour – 0から23までの整数値で、時の値を表します。
- Minute – 0から59までの整数値で、分の値を表します。
- Second – 0から59までの整数値で、秒の値を表します。
次のコードは、TimeSerial関数の使い方を示しています。
Sub UsingTheTimeSerialFunction()
Dim theTime As Date
theTime = TimeSerial(1, 10, 15)
Debug.Print theTime
End Sub
結果は次のようになります。
VBA TimeValue関数
TimeValue関数は、日付または時刻の文字列表現から時刻を返します。 TimeValue 関数の構文は次のとおりです。
TimeValue(Time)
引数は以下のとおりです。
- Time – 時刻を表す文字列。
次のコードは、TimeValue関数の使い方を示しています。
Sub UsingTheTimeValueFunction()
Dim theTime As Date
theTime = TimeValue("22:10:17")
Debug.Print theTime
End Sub
結果は次のようになります。
VBA Weekday関数
Weekday関数を使うと、入力された日付から曜日を表す1~7の整数を返すことができます。 Weekday 関数の構文は次のとおりです。
Weekday(Date, [Firstdayofweek])
引数は以下のとおりです。
- Date – 平日の値を抽出するための日付シリアル値。
- Firstdayofweek(オプション) – この関数が週の最初の日として使用する曜日を指定する定数です。空白の場合は、日曜日が週の最初の日として使用されます。以下の値のいずれかを指定します。
-vbSunday – 日曜日を週の始まりとして使用します。
-vbMonday – 月曜日を週の始まりとして使用します。
-vbTuesday – 火曜日を週の始まりとして使用します。
-vbWednesday – 水曜日を週の始まりとして使用します。
-vbThursday – 木曜日を週の始まりとして使用します。
-vbFriday – 金曜日を週の始まりとして使用します。
-vbSaturday – 土曜を週の始まりとして使用します。
-vbUseSystemDayOfTheWeek – システムの設定により指定された週の最初の曜日を使用します。
Sub UsingTheWeekdayFunction()
Dim theWeekDay As Integer
theWeekDay = Weekday("11/20/2019")
Debug.Print theWeekDay
End Sub
結果は次のようになります。
VBA WeekdayName関数
WeekdayName関数を使うと、入力された曜日番号から曜日名を返すことができます。 WeekdayName 関数の構文は次のとおりです。
WeekdayName(Weekday, [Abbreviate], [Firstdayoftheweek])
引数は以下のとおりです。
- Weekday – 1から7までの整数値です。
- Abbreviate(オプション) – 曜日名を省略するかどうかを指定します。空白の場合、既定値である False が使用されます。
- Firstdayofweek(オプション) – 関数が週の最初の日として使用する曜日を指定する定数です。空白の場合、日曜日が週の最初の日として使用されます。以下の値のいずれかを指定できます。
-vbSunday – 日曜日を週の始まりとして使用します。
-vbMonday – 月曜日を週の始まりとして使用します。
-vbTuesday – 火曜日を週の始まりとして使用します。
-vbWednesday – 水曜日を週の始まりとして使用します。
-vbThursday – 木曜日を週の始まりとして使用します。
-vbFriday – 金曜日を週の始まりとして使用します。
-vbSaturday – 土曜を週の始まりとして使用します。
-vbUseSystemDayOfTheWeek – システムの設定により指定された週の最初の曜日を使用します。
Sub UsingTheWeekdayNameFunction()
Dim theWeekdayName As String
theWeekdayName = WeekdayName(4)
Debug.Print theWeekdayName
End Sub
結果は次のようになります。
VBA Year関数
Year関数を使うと、入力された日付の年号を返すことができます。 Year関数の構文は次のとおりです。
Year(Date_value)
引数は以下のとおりです。
- Date_value – 年を抽出するための日付。
次のコードは、Year 関数を使用する方法を示しています。
Sub UsingTheYearFunction()
Dim theYear As Integer
theYear = Year("11/12/2010")
Debug.Print theYear
End Sub
結果は次のようになります。
VBAでの日付の比較
VBAでは、>、<、=演算子を使用して日付を比較することができます。次のコードは、VBAで2つの日付を比較する方法を示しています。
Sub ComparingDates()
Dim dateOne As Date
Dim dateTwo As Date
dateOne = "2010年10月10日"
dateTwo = "2010年11月11日"
If dateOne > dateTwo Then
Debug.Print "dateOne の方が後の日付です"
ElseIf dateOne = dateTwo Then
Debug.Print "2つの日付は等しいです"
Else
Debug.Print "dateTwo の方が後の日付です"
End If
End Sub
日付を文字列としてフォーマットする方法については、このチュートリアルを参照してください。