Vba Visual Basic:计算从今天起到生日的天数
我需要做一个函数,计算从今天起到生日的天数。 到目前为止,我得到的是:Vba Visual Basic:计算从今天起到生日的天数,vba,date,Vba,Date,我需要做一个函数,计算从今天起到生日的天数。 到目前为止,我得到的是: 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表中的今天日期(=今天()日/月/年) 它给了我日子,但也包括年份。 如何使函数不包含年份?DateDiff只是提供两个日期之间
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表中的今天日期(=今天()日/月/年)
它给了我日子,但也包括年份。
如何使函数不包含年份?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将日期变量存储为双倍,小数点左边是天,右边是时间。如果您只关心天数,则可以保存函数调用并执行简单的减法运算。什么意思?它还包括年份?如生日=10.10.2001和今天=10.04.2015。答案应该是183,而不是4930为什么答案是183?10月4日和10月10日之间相差6天。那没有任何意义。您需要更多地解释一下您的期望以及它应该如何工作。@stocksynd使用
10.10.2001
是一个坏主意,例如,不清楚哪一个是月份,哪一天。现在应该更容易理解看起来很棒!谢谢但如果生日的值大于今天的值,则该值为负值。例如,生日=30.01.2001和今天=10.04.2015给出了-70