How to find the difference between dates in VBA

佐手、 提交于 2019-12-18 07:42:26

问题


I am trying to find out the difference between the system date and the date stored in the worksheet. If the difference between them is > 30 days, the result is true, else the result is false

Dim result as boolean
Dim sDate as string
sDate = Date
if Worksheets("dates").Cells(1,1) - sDate > 30 then 'how do I do this?
     result = true
else
     result = false
end if

How do I find out the difference in days between the system date and the date stored in the worksheet? The date in the worksheet can be a past date, too.


回答1:


I wonder why I rarely see people using the date functions.

You can also use this:

if DateDiff("d", date1, date2) > 30 then

in this case, date1 would be CDate(Worksheets("dates").Cells(1,1)) and date2 would be sdate (either cast with CDate or dim'd as a date as Jeff said.

"d" means we are getting the difference in days. Here are the intervals for years, months, etc. in VBA:

yyyy - Year
q - Quarter
m - Month
y - Day of year
d - Day
w - Weekday
ww - Week
h - Hour
n - Minute
s - Second



回答2:


Try this:

if CDate(Worksheets("dates").Cells(1,1)) - sDate > 30 then



回答3:


sDate is a STRING, which is NOT a Real Date!

Convert your string to a date, using either the CDate() function or the DateValue() function.

However, there is a caveat in this kind of conversion. These conversion will handle the following structures:

yyyy/mm/dd
yyyy/m/d
mm/dd/yyyy
m/d/yyyy

These will not be correctly converted

dd/mm/yyyy
d/m/yyyy

And avoid using any 2-digit year.

I would advise using the DateSerial() function for date conversion.

So regarding your code, assuming that the values on yor sheet are actually dates (to be certain, simply select the column and change the Number Format to GENERAL. If they are real dates, each will display a PURE NUMBER. Remember to hit UNDO to get your Date Format back)

Dim result As Boolean

If Worksheets("dates").Cells(1, 1).Value - Date > 30 Then
     result = True
Else
     result = False
End If


来源:https://stackoverflow.com/questions/8221148/how-to-find-the-difference-between-dates-in-vba

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!