2016-03-23 45 views
2

我一直在尝试使用Excel(Office2010)中的评估函数来比较日期类型,但仍然跑到墙上。感谢任何帮助。
下面是使用使用评估来比较日期类型和int类型

Sub tyrEval() 
Dim myDate1 As Date 
Dim myDate2 As Date 
Dim myInt1 As Integer 
Dim myInt2 As Integer 
Dim myBool As Boolean 
Dim myBool1 As Boolean 
Dim myBool2 As Boolean 
Dim myOperator As String 
myDate1 = CDate("3/13/2016 01:04:53 am") 
myDate2 = CDate("3/13/2016 12:23:37 am") 
myOperator = ">" 
myInt1 = 7 
myInt2 = 6 

myBool = Evaluate(myInt1 & myOperator & myInt2) 
myBool1 = Evaluate(myDate1 & myOperator & myDate2) 
myBool2 = myDate1 > myDate2 

'myBool1 = Evaluate(Chr(34) & myDate1 & Chr(34) & myOperator & Chr(34) & myDate2 & Chr(34)) - working but wrong answer 
'myBool1 = Evaluate(Chr(34) & "myDate1" & Chr(34) & myOperator & Chr(34) & "myDate2" & Chr(34)) - working but wrong answer  
'myBool = Evaluate(myInt1 & myOperator & myInt2) - works  
End Sub 

当我逐句通过代码在我

myBool1 = Evaluate(myDate1 & myOperator & myDate2) 

得到一个类型不匹配错误“的myBool和myBool2越来越结果如预期的子程序。我无法弄清myBool1语句中的错误。我曾尝试在各个地点添加字符(34),但它能让我获得任何地方的支持。注释行显示了一个这样的变体,它是myBool1 ='FALSE',我猜测比较操作是以字符串类型而不是日期类型完成的。

预先感谢您

回答

2

如果你的日期是在格式dd/mm/yyyy然后计算表达式会工作,但它是在格式m/dd/yyyy hh:mm:ss am/pm

因为我们知道,Excel存储数量的日期和时间格式,只需试试这个,它会工作:)

Dim myDate1 As Double 
Dim myDate2 As Double 
+2

由于有时涉及,使用双倍会更好。 – Rory

+0

好主意! :)完成 –

+1

'双'也将有助于比较混合*日期/时间* –