Return to VBA Code Examples

VBA 日付に関する関数

このチュートリアルでは、さまざまな組み込みの日付に関する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