I\'m writing a vba subroutine in excel to store all date values between 2 dates in a single dimension array and then check for each value in a range on another sheet.
To provide a solution to my example a colleague mentioned if you dim the date values as the date
datatype the issues with the values going sheet -> vba -> sheet disappears.
In general, the date system in VBA is different than the date system in Excel. You can have these 3 date system options:
This is the difference:
The dates are converted to numbers. E.g., every date is converted to a number, but the starting number is a bit different.
The 1904 system (or its lack) is set per Workbook. Thus, if you have 2 workbooks in Excel, one with 1904 and one without it, it would recognize them correspondingly. The system is set in:
File > Options > Advanced > Use 1904 Date System
In general, if there is a chance, that someone somehow changes your workbook with the wrong system, consider adding this check at the openning of the workbook:
Private Sub Workbook_Open()
If ThisWorkbook.Date1904 Then
MsgBox "System is 1904, consider some action!"
End If
End Sub
If you are wondering which system to choose - I can recommend never using the 1904.