【问题标题】:VBA Error 3075 When Filtering Between Dates在日期之间过滤时出现 VBA 错误 3075
【发布时间】:2025-12-08 14:10:02
【问题描述】:

我知道关于这个主题有很多已回答的问题,但没有一个回答以下问题: 我有这个小而简单的代码:

Private Sub btnHwEOLNext2_Click()

Dim filterString As String
Dim startDate As Date
Dim endDate As Date

startDate = Date
endDate = Date + 730

filterString = "[HW End of Support] BETWEEN '" & startDate & " And " & endDate & "'"

Me.Filter = filterString
DoCmd.SetOrderBy "[HW End of Support] ASC"
Me.FilterOn = True

End Sub

我要做的就是在 2 个日期之间进行过滤。 startDatedate 将始终是您使用表单的日期,endDate 将始终是 startDate 之后的 730 天

为什么我一直在得到

错误 3075

?请帮忙!

【问题讨论】:

  • 你试过用#代替单引号吗?
  • 如果您提供错误消息的文本,而不仅仅是数字,这也将有助于我们帮助您!并且还要指出是哪一行代码触发了错误。
  • filterString 导致 [HW End of Support] BETWEEN '11.04.2018 And 10.04.2020' 看起来缺少引号
  • 你能不能这样试试 -> "[HW End of Support] BETWEEN "" & startDate & "" And "" & endDate & ""
  • @Vityata 那位同事!非常感谢!如果你把它放在一个答案中,我会相应地标记它!

标签: date ms-access vba filtering


【解决方案1】:

如果您将日期放在# 符号之间,则 VBA 会将其视为日期。

由于 SQL 使用的是带有MM-DD-YYYY 的美国日期系统,您可以在解析之前更改# 符号之间的格式:

"[HW End] BETWEEN #" & Format(sd,"MM-DD-YYYY") & "# And #" & Format(ed,"MM-DD-YYYY") & "#"

【讨论】: