VBA中日期之间的总和

问题描述 投票:1回答:2

这里的代码没有在totaldate的过程中工作,因为我检查它没有从date1date2减去,但他们已经得到了他们的值,如

Text1 = 2/10/2019

Text2 = 2/8/2019

我试图从两个文本框Text1Text2中减去两个日期,我已经确保它们的格式是短日期。

我确实让它只是totaldate = Text1 - Text2但它也没有用

Sub tgl()
    date1 = Text1
    date2 = Text2
    totaldate = date1 - date2
    fine = totaldate * 50
End Sub

在这个输出中总结所有的日期,它将在你减去Text1Text2后剩下2天,然后你乘以50所以你将获得变量fine = 100的值

ms-access access-vba
2个回答
0
投票

MS Access中的日期存储为自1899年12月30日午夜起经过的天数,时间分量以十进制格式表示为一天的一小部分,例如:

?cdate(1.5)
31/12/1899 12:00:00 

如果您的日期值没有时间分量,那么简单地减去两个日期值确实会产生分隔两个日期的天数:

?#2019-02-10#-#2019-02-08#
 2 

但是,如果您的日期时间值也有时间分量,那么执行两个值的基本减法将产生一个double,而不是整数值:

?#2019-02-10 09:30#-#2019-02-08 07:00#
 2.10416666667152 

因此,您需要使用DateDiff函数,指定days的间隔,或使用DateValue函数返回日期时间值的日期组件:

?DateDiff("d",#2019-02-08 07:00#,#2019-02-10 09:30#)
 2 
?DateValue(#2019-02-10 09:30#)-DateValue(#2019-02-08 07:00#)
 2 

考虑到这一点,您可以考虑将Sub更改为以下内容(假设这是在表单模块中定义的,其中变量Text1Text2在范围内):

Sub tgl()
    Dim fine As Long
    fine = (DateValue(Text1) - DateValue(Text2)) * 50
End Sub

这也将说明您的Text1Text2值是否为字符串而不是日期值。


0
投票

使用DateDiff函数

DateDiff("d", date1 , date2)
© www.soinside.com 2019 - 2024. All rights reserved.