Calculate Number of Days between Two Dates with VBA in Excel

While working with dates with VBA in Excel, we often have to calculate the number of days between two dates. In this article, I’ll show you how you can calculate the number of days between two dates with VBA in Excel. You’ll learn to calculate the number of days with proper examples and illustrations involving Macro and UDF.


Calculate Number of Days Between Two Dates with VBA in Excel (Quick View)

Sub Number_of_Days_Between_Two_Dates_1()
Date1 = CDate("1/1/2021")
Date2 = CDate("6/6/2021")
Number_of_Days = Date2 - Date1
MsgBox Number_of_Days
End Sub

VBA Code to Calculate the Number of Days between Two Dates


Download Practice Workbook

Download this practice workbook to exercise while you are reading this article.


Calculate Number of Days Between Two Dates with VBA in Excel (Step by Step Analysis)

So, without further delay, let’s move to our main discussion. You can calculate the number of days between two dates in 3 ways with VBA.


Method 1: Calculate Number of Days Between Two Dates by Direct Subtraction

First of all, you can calculate the number of days between two dates by direct substitution.

Let’s have two dates, 1/1/2021 and 6//6/2021.

First, we’ll use the CDate function of VBA to convert the strings to dates.

Next, we’ll calculate the days between two dates by direct substitution.

So, the complete VBA code will be:

⧭ VBA Code:

Sub Number_of_Days_Between_Two_Dates_1()

Date1 = CDate("1/1/2021")

Date2 = CDate("6/6/2021")

Number_of_Days = Date2 - Date1

MsgBox Number_of_Days

End Sub

VBA Code to Calculate the Number of Days between Two Dates

⧭ Output:

Run the code, and it’ll display the days between the two dates, 1/1/2021 and 6/6/2021. It’s 156.

Output to Calculate the Number of Days between Two Dates with Excel VBA

Read More: How to Add/Subtract Years to a Date in Excel


Method 2: Calculate Number of Days Between Two Dates by the DateDiff Function of VBA

You can use the DateDiff function of VBA to calculate the number of days between two dates by Excel VBA.

Here also, we’ll use the CDate function to convert the strings to dates.

Along with these, we’ll need another variable called Difference_Format that will contain the format of the differences. Here it’s “d” (Days).

So the complete VBA code will be:

⧭ VBA Code:

Sub Number_of_Days_Between_Two_Dates_2()
Difference_Format = "d"
Date1 = CDate("1/1/2021")
Date2 = CDate("6/6/2021")
MsgBox DateDiff(Difference_Format, Date1, Date2)
End Sub

⧭ Output:

Run the code, and it’ll again display the days between the two dates, 1/1/2021 and 6/6/2021. It’s 156.

Output to Calculate the Number of Days between Two Dates with Excel VBA

Read More: How to Use DateDiff Function in Excel VBA (5 Examples) 


Similar Readings:


Method 3: Calculate Number of Days Between Two Dates by the DATEDIF Function of Excel

You can also calculate the number of days between two dates by the DATEDIF function of Excel.

But you can only use this method if the dates are taken from Excel cells.

For example, let’s cell C3 in the worksheet contains the starting date 1/1/2021, and cell C5 in the worksheet contains the ending date 6/6/2021.

Excel Dates to Calculate the Number of Days between Two Dates with Excel VBA

And we want to get the difference between these two dates in cell B9.

Now we can develop a VBA code using the DATEDIF Function of Excel. But to use the DATEDIF function, we’ll need one more argument called the Difference_Type.

Here it’s “d”. We’ve put it in cell C7.

Now we’ll develop the VBA code. The code will be:

⧭ VBA Code:

Sub Number_of_Days_Between_Two_Dates_3()
Range("C9").Formula = "=DATEDIF(C3,C5,C7)"
End Sub

VBA Code to Calculate the Number of Days between Two Dates with Excel VBA

⧭ Output:

Run the code. It’ll show the difference between the two dates in cell C9. It’s 156.

Output to Calculate the Number of Days between Two Dates with Excel VBA

Related Content: Number of Months Between Two Dates in Excel: 5 Easy Ways to Find


Examples to Calculate Number of Days Between Two Dates with Excel VBA

We’ve learned to calculate the number of days between two days using Excel VBA. Now, let’s explore a few examples of this.


Example 1: Developing a Macro to Calculate the Number of Days Between Two Columns of Dates with Excel VBA

Here we’ve got a data set with the Names, Joining Dates, and Today’s Dates of some employees of a company called Jupyter Group.

Data Set to Calculate the Number of Days between Two Dates with Excel VBA

Now we’ll develop a Macro to calculate the service days of each of the employees.

We’ve to calculate the number of days between each date of the columns C4:C13 and D4:D13.

⧭ VBA Code:

Sub Calculate_Service_Days()

Set Starting_Dates = Range("C4:C13")

Set Present_Dates = Range("D4:D13")

Set Service_Days = Range("E4:E13")

For i = 1 To Starting_Dates.Rows.Count
    For j = 1 To Starting_Dates.Columns.Count
        Service_Days.Cells(i, j) = CDate(Present_Dates.Cells(i, j)) - CDate(Starting_Dates.Cells(i, j))
    Next j
Next i

End Sub

⧭ Output:

Run this code. It’ll calculate the service days of each employee in the range E4:E13.

Output to Calculate the Number of Days between Two Dates with Excel VBA

Related Content: How to Calculate Overdue Days in Excel (3 Methods)


Example 2: Creating a User-Defined Function to Calculate Number of Days Between Two Dates with Excel VBA

Now we’ll create a User-Defined function that’ll take two dates or two ranges of dates as the arguments, and return the difference (s) between them.

The VBA code will be:

⧭ VBA Code:

Function Days_Difference(Date1, Date2)

If VarType(Date1) <> 8204 And VarType(Date2) <> 8204 Then
    Days_Difference = CDate(Date2) - CDate(Date1) 
  
ElseIf VarType(Date1) = 8204 And VarType(Date2) <> 8204 Then
    Dim Output1() As Variant
    ReDim Output1(Date1.Rows.Count - 1, Date1.Columns.Count - 1)
    For i = 1 To Date1.Rows.Count
        For j = 1 To Date1.Columns.Count
            Output1(i - 1, j - 1) = CDate(Date2) - CDate(Date1.Cells(i, j))
        Next j
    Next i
    Days_Difference = Output1   

Else
    Dim Output2() As Variant
    ReDim Output2(Date1.Rows.Count - 1, Date1.Columns.Count - 1)
    For i = 1 To Date1.Rows.Count
        For j = 1 To Date1.Columns.Count
            Output2(i - 1, j - 1) = CDate(Date2.Cells(i, j)) - CDate(Date1.Cells(i, j))
        Next j
    Next i
    Days_Difference = Output2

End If

End Function

VBA Code to Calculate the Number of Days between Two Dates with Excel VBA

⧭ Output:

First, we’ll calculate the difference between two single days.

Select a cell from the worksheet and enter this formula:

=Days_Difference("5/1/2013","3/8/2022")

It’ll return the difference of days between these two dates.

Now we’ll calculate the difference between a range of dates and a single date.

Select a range of cells and enter this formula:

=Days_Difference(C4:C13,D4)

Then press CTRL + SHIFT + ENTER (Array Formula). It’ll return the difference of each date of the range C4:C13 from the date of the cell D4.

Function to Calculate the Number of Days between Two Dates with Excel VBA

Finally, we’ll calculate the difference between the dates of two ranges.

Select a range of cells and enter this formula:

=Days_Difference(C4:C13,D4:D13)

Then press CTRL + SHIFT + ENTER (Array Formula). It’ll return the difference of each date of the range C4:C13 from the dates of the range D4:D13.

Related Content: Excel Formula to Calculate Number of Days Between Today & Another Date (6 Quick Ways)


Things to Remember

In this article, I showed you how you can calculate the number of days between two dates only. If you want to calculate the number of workdays, you can use the NETWORKDAYS  function or the NETWORKDAYS.INTL function of Excel.


Conclusion

So, these are the ways to use calculate the number of days between two dates with VBA in Excel. Hope the examples made everything clear for you. Do you have any questions? Feel free to ask us. And don’t forget to visit our site ExcelDemy for more posts and updates.


Related Articles

Rifat Hassan

Rifat Hassan

Hello! Welcome to my profile. Here I will be posting articles related to Microsoft Excel. I am a passionate Electrical Engineer holding a Bachelor’s degree in Electrical and Electronic Engineering from the Bangladesh University of Engineering and Technology. Besides academic studies, I always love to keep pace with the revolution in technology that the world is rushing towards day by day. I am diligent, career-oriented, and ready to cherish knowledge throughout my life.

We will be happy to hear your thoughts

Leave a reply

ExcelDemy
Logo