VBA DatePart Function
In this Article
DatePart Description
Returns a specified part of a given date.
Simple DatePart Examples
Here is a simple DatePart example:
Sub DatePart_Year_Test()
MsgBox DatePart("yyyy", #1/1/2019#)
End Sub
This code will return 2019.
DatePart Syntax
In the VBA Editor, you can type “DatePart(” to see the syntax for the DatePart Function:
The DatePart function contains 4 arguments:
Interval: Time unit (Days, Months, Years, etc.). Enter as string. (ex. “m” for Month)
Setting | Description |
---|---|
yyyy | Year |
q | Quarter |
m | Month |
y | Day of Year |
d | Day |
w | Weekday |
ww | Week |
h | Hour |
n | Minute |
s | Second |
Date: Varient (Date) value that you want to evaluate.
FirstDayOfWeek: A constant that specifies the first day of the week. This is optional. If not specified, Sunday is assumed.
Constant | Value | Description |
---|---|---|
vbUseSystem | 0 | Use the NLS API setting. |
vbSunday | 1 | Sunday (default) |
vbMonday | 2 | Monday |
vbTuesday | 3 | Tuesday |
vbWednesday | 4 | Wednesday |
vbThursday | 5 | Thursday |
vbFriday | 6 | Friday |
vbSaturday | 7 | Saturday |
FirstWeekOfYear: A constant that specifies the first week of the year. This is optional. If not specified, the first week is assumed to be the week in which January 1 occurs.
Constant | Value | Description |
---|---|---|
vbUseSystem | 0 | Use the NLS API setting. |
vbFirstJan1 | 1 | Start with week in which January 1 occurs (default). |
vbFirstFourDays | 2 | Start with the first week that has at least four days in the new year. |
vbFirstFullWeek | 3 | Start with first full week of the year. |
Examples of Excel VBA DatePart Function
Referencing Dates
To start, we will demonstrate different ways to reference dates using the VBA DatePart Function.
Each of these DatePart functions produce the same result:
Sub DateAdd_ReferenceDates()
MsgBox DatePart("yyyy", #4/1/2019#)
MsgBox DatePart("yyyy", DateSerial(2019, 4, 1))
MsgBox DatePart("yyyy", DateValue("April 1, 2019"))
End Sub
Or you can reference a cell containing a date:
Sub DatePart_ReferenceDate_Cell()
MsgBox DatePart("yyyy", Range("C2").Value)
End Sub
Or create and reference date variables:
Sub DatePart_Variable()
Dim dt As Date
dt = #4/1/2019#
MsgBox DateAdd("yyyy", dt)
End Sub
Using Different Units of Interval
Quarter
Sub DatePart_Quarter()
MsgBox DatePart("q", #6/30/2019#)
End Sub
Month
Sub DatePart_Month()
MsgBox DatePart("m", #6/30/2019#)
' equivalent
MsgBox Month(#6/30/2019#)
End Sub
Day
Sub DatePart_Day()
MsgBox DatePart("d", #6/30/2019#)
' equivalent
MsgBox Day(#6/30/2019#)
End Sub
Week
Sub DatePart_Week_Test()
MsgBox DatePart("w", #6/30/2019#)
' equivalent
MsgBox Weekday(#6/30/2019#)
End Sub
Hour
Sub DatePart_Hour()
Dim dt As Date
Dim nHour As Long
dt = #8/14/2019 9:30:00 AM#
nHour = DatePart("h", dt)
MsgBox nHour
' equivalent
MsgBox Hour(dt)
End Sub
Minutes
Sub DatePart_Minute()
MsgBox DatePart("n", #8/14/2019 9:15:00 AM#)
' equivalent
MsgBox Minute(#8/14/2019 9:15:00 AM#)
MsgBox Minute(#9:15:00 AM#)
End Sub
Second
Sub DatePart_Second()
MsgBox DatePart("s", #8/14/2019 9:15:15 AM#)
' equivalent
MsgBox Second(#8/14/2019 9:15:15 AM#)
MsgBox Second(#9:15:15 AM#)
End Sub