【问题标题】:VBA, filtering by date, how to stop excel converting date to number?VBA,按日期过滤,如何停止excel将日期转换为数字?
【发布时间】:2022-01-11 05:10:32
【问题描述】:

我正在使用以下代码,但是每当我检查过滤器时,日期都是日期的数值,而不是“20/01/2020”,谢谢。

filter_date = "20/01/2020"
filter_date = Format(filter_date, "dd/mm/yyyy")

ActiveSheet.Range("$A$1:$L$10").AutoFilter Field:=8, _
Criteria1:=">=" & Format(filter_date, "dd/mm/yyyy"), Operator:=xlAnd

【问题讨论】:

  • 你是如何声明你的filter_date 变量的?只是为了确定:你表中的日期是文本字符串,而不是真正的日期?
  • 声明为字符串
  • 我强烈建议您将其转换为 double 并像这样进行过滤,您在使用您所遵循的逻辑时可能会遇到随机错误。
  • 继@Sgdva 的评论,也看看我对auto filter with column formatted as a date的回答

标签: excel vba


【解决方案1】:

备用答案

问题下的 cmets 有一个解决方案,但我建议保留 Date 数据类型并使用这样的东西,这应该可以工作:

Option Explicit

Sub Test()

Dim filter_date As Date  ' Declaring the var type as Date

filter_date = #20/1/2020#  ' Use the # sign around a date to identify it as Date

ActiveSheet.Range("$A$1:$L$10").AutoFilter Field:=8, _
Criteria1:=">=" & filter_date, Operator:=xlAnd

End Sub

我认为这更容易更短,而且您可以更轻松地在代码中读取日期。在日期周围使用# 是分配日期的方法。

【讨论】:

  • 谢谢,添加 ' 似乎也可以,Criteria1:=">='" & filter_date 也可以
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-21
  • 2017-07-31
  • 2021-10-09
  • 2014-09-12
  • 2018-04-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多