VBA 日付に関する関数

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 5月 16, 2022

このチュートリアルでは、さまざまな組み込みの日付に関するVBA関数について説明します。

VBA Date関数

Date関数を使用すると、現在の日付を返すことができます。 Date関数の構文はDate()です。この関数には引数がありません。 次のコードは、Date 関数の使用方法を示しています。

Sub UsingTheDateFunction()

Dim theDate As Date
theDate = Date()

Debug.Print theDate

End Sub

イミディエイトウィンドウに表示される結果は、以下の通りです。

Using the Date Function in VBA

VBA Now関数

Now関数を使うと、現在の日付と時刻を返すことができます。 Now関数の構文はNow()です。この関数には引数がありません。 次のコードは、Now 関数の使用方法を示しています。

Sub UsingTheNowFunction()

Dim theDate As Date
theDate = Now()

Debug.Print theDate

End Sub

結果は次のようになります。

Using the Now Function in VBA

VBA Time関数

Time関数を使うと、現在の時刻を返すことができます。 Time 関数の構文はTime()です。引数はありません。 次のコードは、Time Functionの使い方を示しています。

Sub UsingTheTimeFunction()

Dim theTime As Date
theTime = Time()

Debug.Print theTime

End Sub

結果は次のようになります。

Using the Time Function in VBA

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

結果は次のようになります。

Using the DateAdd Function in VBA

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

結果は、以下のようになります。

Using The DateDiff Function in VBA

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

結果は次のようになります。

Using the DatePart Function in VBA

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

結果は次のようになります。

Using the Date Serial Function in VBA

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

結果は次のようになります。

Using the DateValue Function in VBA

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

結果は次のようになります。

Using the Day Function in VBA

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

結果は次のようになります。

Using the Hour Function in VBA

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

結果は次のようになります。

Using The Minute Function in VBA

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

結果は次のようになります。

Using the Second Function in VBA

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

結果は次のようになります。

Using the Month Function in VBA

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

結果は次のようになります。

Using MonthName Function in VBA

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

結果は次のようになります。

Using the TimeSerial Function in VBA

VBA TimeValue関数

TimeValue関数は、日付または時刻の文字列表現から時刻を返します。 TimeValue 関数の構文は次のとおりです。

TimeValue(Time)

引数は以下のとおりです。

  • Time – 時刻を表す文字列。

次のコードは、TimeValue関数の使い方を示しています。

Sub UsingTheTimeValueFunction()

Dim theTime As Date
theTime = TimeValue("22:10:17")

Debug.Print theTime

End Sub

結果は次のようになります。

The Time Value Function in VBA

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

結果は次のようになります。

Using The WeekDay Function in VBA

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

結果は次のようになります。

Using the WeekdayName Function in VBA

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

結果は次のようになります。

Using The Year Function in VBA

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

Comparing Dates in VBA 日付 比較

日付を文字列としてフォーマットする方法については、このチュートリアルを参照してください。

vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples