2012-07-19 25 views
2

我正在運行下面的表達式來比較兩個日期的差異。如果兩個日期都在單元格中,我希望它返回0,但如果Date2是空白,我希望顯示差異。現在,如果date2中沒有日期,我只會得到#ERROR。任何想法將不勝感激。如果值爲空白,QRY返回錯誤?

expr2: NetWorkDays([Date1],[Date2]) 

Option Compare Database 

Public Function NetWorkdays(dteStart As Date, dteEnd As Date) As Integer 

Dim intGrossDays As Integer 
Dim dteCurrDate As Date 
Dim i As Integer 

intGrossDays = DateDiff("d", dteStart, dteEnd) 
NetWorkdays = 0 

For i = 0 To intGrossDays 
dteCurrDate = dteStart + i 
If Weekday(dteCurrDate, vbMonday) < 6 Then 
End If 
Next i 

End Function 
+0

什麼是你打算用'做NETWORKDAYS = 0' – talbright 2012-07-19 19:13:30

+0

有時該字段爲空,如果是,我需要知道自輸入第一個字段日期以來它已空白多長時間 – user1342164 2012-07-19 20:15:27

+0

您可以請在您要調用函數的地方發佈代碼嗎? – talbright 2012-07-20 12:56:48

回答

1

該函數將始終返回0,如果不刪除的功能NetWorkdays = 0,你會繼續你得到一個錯誤,如果你不換行if語句等,其中調用該函數在這樣的:

If Not IsNull(Date2) Then 
txtResult = NetWorkdays(Date1, Date2) 
Else 
txtResult = 0 
End If 

txtResult是要在顯示搜索結果的文本框

你可能想看看這個鏈接http://msdn.microsoft.com/en-us/library/bb258196(v=office.12).aspx。它是爲訪問計算兩個日期之間的工作日數量而設計的一項功能。

使用此功能,你應該得到的結果,你想要做這樣的事情:

If Not IsNull(Date2) Then 
txtResult = 0 
Else 
txtResult = Work_Days(Date1, Now()) 
End If 
+0

仍然得到#ERROR不知道 – user1342164 2012-07-19 20:10:35

+0

謝謝,我試圖做DATE1和現在之間的差異()/今天的日期,如果電池是空的。如果date2包含日期輸出零。 – user1342164 2012-07-20 13:35:19

+0

我會調整我的答案來解決這個問題,假設你要使用提供的鏈接中的函數。 – talbright 2012-07-20 13:39:29