我需要制作一个函数来计算从今天开始直到生日的天数。 到目前为止我所拥有的是:
Function synnipaev(sk As Date, tana As Date)
synnipaev = DateDiff("d", sk, tana)
End Function
sk在Excel表格中生日(格式为10.10.2001 DD / MM / YYYY)
tana是Excel工作表中的今天日期(= TODAY()DD / MM / YYYY)
它给了我几天,但也包括岁月。 如何使功能不包括多年?
答案 0 :(得分:2)
DateDiff只是给你两个日期之间的总天数。您需要找到当前日期与 下一个 生日日期之间的差异:
Public Function DaysToBirthday(birthday As Date) As Integer
Dim targetYear As Integer
'Has the birthday already passed this year?
If Month(Now) > Month(birthday) Or _
(Month(Now) = Month(birthday) And Day(Now) > Day(birthday)) Then
'Then use next year.
targetYear = Year(Now) + 1
Else
targetYear = Year(Now)
End If
DaysToBirthday = CInt(DateSerial(targetYear, Month(birthday), Day(birthday)) - Now)
End Function
注意:VBA将日期变量存储为双打,小数点左侧的天数和右侧的时间。如果你关心的只是几天,你可以保存函数调用并进行简单的减法。