【发布时间】:2019-04-16 02:36:07
【问题描述】:
我有 2 个单元格的时间数据格式如下:
"A1" = Sep 01 2018 00:01:33.707
"A2" = Sep 01 2018 00:01:49.917
我需要在 Excel VBA 中创建一个按钮和方法,如果时间“A2”比“A1”多 90 秒,则将“A3”单元格设置为 true。 这是我到目前为止所拥有的,但它不起作用:
Sub Macro2()
Dim str1 As String, str2 As String
With Worksheets("sheet5")
str1 = .Cells(1, "A").Text
str2 = .Cells(2, "A").Text
'greater than 90m seconds in A3
.Cells(3, "A") = CBool(Abs((DateValue(Left(str1, 6) & "," & Mid(str1, 7, 5)) + _
TimeValue(Mid(str1, 13, 8)) + TimeSerial(0, 0, 1) * CDbl(Right(str1, 4))) - _
(DateValue(Left(str2, 6) & "," & Mid(str2, 7, 5)) + _
TimeValue(Mid(str2, 13, 8)) + TimeSerial(0, 0, 1) * CDbl(Right(str2, 4)))) > _
TimeSerial(0, 0, 90))
'actual absolute difference in A4
.Cells(4, "A") = Abs((DateValue(Left(str1, 6) & "," & Mid(str1, 7, 5)) + _
TimeValue(Mid(str1, 13, 8)) + TimeSerial(0, 0, 1) * CDbl(Right(str1, 4))) - _
(DateValue(Left(str2, 6) & "," & Mid(str2, 7, 5)) + _
TimeValue(Mid(str2, 13, 8)) + TimeSerial(0, 0, 1) * CDbl(Right(str2, 4))))
End With End Sub
上面给出了错误,因为日期函数适用于系统语言环境,在我的例子中是希伯来语,而数据是英语。
另一种可能有帮助的方法是将所有“A”列(包含日期)转换为可与 VBA 上的日期和时间函数一起使用的系统本地日期(不知道该怎么做)。
请帮忙
【问题讨论】:
-
A1 和 A2 中的值是真实日期还是看起来像日期的字符串?
-
@FunThomas 它们是来自另一个系统的真实日期,以字符串形式导出