我试图找出系统日期与工作表中存储的日期之间的差异。如果它们之间的差异是> 30天,结果为真,否则结果为假
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
如何找出系统日期与工作表中存储的日期之间的天数差异?工作表中的日期也可以是过去的日期。
答案 0 :(得分:26)
我想知道为什么我很少看到人们使用日期函数。
您也可以使用:
if DateDiff("d", date1, date2) > 30 then
在这种情况下,date1将是CDate(工作表(“日期”)。单元格(1,1)) 而且日期2将是sdate(或者用CDate进行投射,或者像杰夫所说的那样用dim'd作为日期。
“d”表示我们在天数上有所不同。以下是VBA中年,月等的间隔:
yyyy - Year
q - Quarter
m - Month
y - Day of year
d - Day
w - Weekday
ww - Week
h - Hour
n - Minute
s - Second
答案 1 :(得分:3)
试试这个:
if CDate(Worksheets("dates").Cells(1,1)) - sDate > 30 then
答案 2 :(得分:1)
sDate是一个STRING,这不是一个真实的日期!
使用CDate()函数或DateValue()函数将字符串转换为日期。
但是,这种转换有一个警告。这些转换将处理以下结构:
yyyy/mm/dd
yyyy/m/d
mm/dd/yyyy
m/d/yyyy
这些将无法正确转换
dd/mm/yyyy
d/m/yyyy
避免使用任何2位数年份。
我建议使用DateSerial()函数进行日期转换。
关于你的代码,假设yor表上的值实际上是日期(确切地说,只需选择列并将数字格式更改为GENERAL。如果它们是实际日期,则每个都将显示一个纯数字。请记住点击UNDO以获取日期格式)
Dim result As Boolean
If Worksheets("dates").Cells(1, 1).Value - Date > 30 Then
result = True
Else
result = False
End If