2016-03-23 40 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

'雙'也將有助於比較混合*日期/時間* –