2016-08-02 101 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