首页 > 解决方案 > 使用 VBA 无法获取月份和剩余天数中的两个日期之间的差异

问题描述

在 Excel 中的 DateDiff 函数,也让我们使用属性如 MD :查找计算月份后的剩余天数,但无法在 VBA 中使用

例如

Start Date: 7/8/2020
End Date: 6/3/2021

答案应该是:10个月26天

请让我知道使用 VBA excel 执行此操作的方法

fromDate = TextBox1.Value
Dim toDate As Date
toDate = TextBox2.Value  
diff = DateDiff("m", fromDate, toDate) – To find months
totaldays = DateDiff("d", fromDate, toDate) – To find total days
projected_Date = DateAdd("m", (diff), fromDate) – Adding the month to start date
days_diff_proj = DateDiff("d", projected_Date, toDate) Finding the remaining days                  
TextBox3.Value = CStr(diff) + " Months " + CStr(days_diff_proj) + " Days "
    

标签: excelvbadatedifference

解决方案


我假设 toDate 总是比 fromDate 大。

您首先计算月差的尝试很好。但是,当 VBA 进行舍入时,您需要发现计算的月数太大的情况 - 在这种情况下,通过将月数减一来进行计算。

Dim month_diff_proj As Long
month_diff_proj = DateDiff("m", fromDate, toDate)

Dim projected_Date As Date, days_diff_proj As Long
projected_Date = DateAdd("m", month_diff_proj, fromDate)

If projected_Date > toDate Then
    month_diff_proj = month_diff_proj - 1    ' reduce by 1 month 
    projected_Date = DateAdd("m", month_diff_proj, fromDate)
End If
days_diff_proj = DateDiff("d", projected_Date, toDate)

Debug.Print month_diff_proj, days_diff_proj

推荐阅读