Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba Visual Basic:计算从今天起到生日的天数_Vba_Date - Fatal编程技术网

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