Visual Basic:计算从今天到生日的天数

时间:2015-04-10 00:24:54

标签: 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工作表中的今天日期(= TODAY()DD / MM / YYYY)

它给了我几天,但也包括岁月。 如何使功能不包括多年?

1 个答案:

答案 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将日期变量存储为双打,小数点左侧的天数和右侧的时间。如果你关心的只是几天,你可以保存函数调用并进行简单的减法。