2016-08-02 78 views
1

我有一個窗體,建立一個過濾器。刪除日期歧義

我有兩個文本框用作過濾器的開始日期和結束日期。他們有格式Short Date

VBA代碼如下:

Dim fdate4 As Date 
Dim fdate5 As Date 


fdate4 = Format(txtStart, "yyyy/mm/dd", vbMonday, vbFirstJan1) 
fdate5 = Format(txtFinish, "yyyy/mm/dd", vbMonday, vbFirstJan1) 

當我嘗試通過過濾十月1日至12月31日和debug.print形式的過​​濾器我看到:

[DutyDate] BETWEEN #01/10/2015# AND #31/12/2015# 

然而它包括從一月份開始的日期。這是關於表單本身或過濾器字符串的格式。

我試過使用CDate以及其他格式dd/\mm/\yyyy但是,所有結果都一樣。

+2

我想你應該'Dim fdate4 As String',或者'Format()'不起作用 - 日期變量沒有格式。 – Andre

+0

請發佈更多您的代碼。此代碼不能是完整的代碼。 –

+1

@George:缺少的行添加到答案。 – Gustav

回答

3

你應該使用類似這樣的格式的最後一個參數僅供周「/」本身並不是一個斜槓,但(本地化)日期分隔符:

Dim fdate4 As String 
Dim fdate5 As String 

fdate4 = Format(txtStart, "yyyy\/mm\/dd") 
fdate5 = Format(txtFinish, "yyyy\/mm\/dd") 

喬治缺少的行:

Me.Filter = "[DutyDate] BETWEEN #" & fdate4 & "# AND #" & fdate5 & "#" 
Me.FilterOn = True