【问题标题】:access vba find date not working for single digit days访问vba查找日期不适用于个位数天
【发布时间】:2017-09-05 21:09:45
【问题描述】:

我正在尝试将数据从 Access 数据库复制到 Excel 电子表格

首先我需要通过搜索日期找到正确的列,这适用于日期为 2 位的日期,即 2017 年 9 月 16 日,但对于 2017 年 6 月 9 日只有一个数字的日期,它无法找到日期

在 excel 中,我尝试使用 2017 年 6 月 9 日进行查找,结果很好,但找不到 06/09/2017

我的访问字段显示为 2017 年 9 月 6 日,所以我不确定问题出在哪里,我在下面尝试过代码(所有结果都相同)

colNo = .Cells.Find(What:=Format(Me.RejectDate,dd/mm/yyyy), After:=.Cells(1, 1), LookIn:=(-4123), SearchOrder:=2, SearchDirection:=1, MatchCase:=False).Column

colNo = .Cells.Find(What:=CDate(Me.RejectDate), After:=.Cells(1, 1), LookIn:=(-4123), SearchOrder:=2, SearchDirection:=1, MatchCase:=False).Column

colNo = .Cells.Find(What:=Me.RejectDate, After:=.Cells(1, 1), LookIn:=(-4123), SearchOrder:=2, SearchDirection:=1, MatchCase:=False).Column

0 是自动添加的吗?如果是,为什么?我该如何阻止它?
还是有其他问题?

【问题讨论】:

  • DD/MM/YYYY 是国际格式,不是 MM/DD/YYYY 的访问标准。查看allenbrowne.com/ser-36.html。在 Format 函数中使用 dd 会强制占位符为 0,因此它的格式为 06,而不是 6。我很惊讶 Format 函数在没有引号中的格式掩码的情况下完全有效。
  • Format 函数的结果是字符串,不是日期值。我只是重新阅读了这个问题。很奇怪。格式化的日期应匹配 06/09/2017,而不是 6/09/2017。
  • @June7 哦,我的错,当我运行它时它确实有引号,但我只是匆忙地从 CDate 重写了它,以显示我在将它复制到问题中时尝试过的内容
  • 我在美国以外的新西兰,所以我的区域设置是新西兰,默认日期格式是 dd/mm/yyyy,不确定它是否会影响这一点,但我只是说万一

标签: vba date ms-access


【解决方案1】:

找到解决方案
我只是检查是否从格式函数中添加了 0,如果添加了则删除 0

dataDate = Format(Me.RejectDatetb, "dd/mm/yyyy")
If Left(dataDate, 1) = "0" Then
    dataDate = Right(dataDate, Len(dataDate) - 1)
End If
colNo = .Cells.Find(What:=dataDate, After:=.Cells(1, 1), LookIn:=(-4123), SearchOrder:=2, SearchDirection:=1, MatchCase:=False).Column

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    相关资源
    最近更新 更多