【发布时间】:2019-05-09 13:52:21
【问题描述】:
我正在尝试使用 VBA 在 Excel 中按日期过滤。
输入过滤器时日期会转置,月份和日期被交换为美国而不是欧洲日期。
表格中的日期格式为短日期,输入文本框中的日期格式正确。
dateselect 是激活过滤器的复选框,datestart 和 datefinish 是保存日期的文本框。
If dateselect = True Then
With Worksheets("Data").Range("C:C")
.AutoFilter field:=1, Operator:=xlAnd, Criteria1:=">=" & Datestart, Criteria2:="<=" & datefinish
End With
End If
我尝试为日期添加格式,但出现溢出错误。
If dateselect = True Then
With Worksheets("Data").Range("C:C")
.AutoFilter field:=1, Operator:=xlAnd, Criteria1:=">=" & Format(Datestart, dd/mm/yyyy), Criteria2:="<=" & Format(datefinish, dd/mm/yyyy)
End With
End If
所以我得到一个转置日期,如果我试图强制格式我得到一个溢出。
【问题讨论】:
-
这段代码在
Worksheet_Change事件中吗? -
尝试使用
DateValue -
代码在您按下按钮时被激活,并且位于该按钮的宏中。周围有更多数据,但这与这个问题无关。刚试了 DateValue 还是换位了。
-
日期是“真正的 Excel 日期”而不是日期的文本表示形式吗? (单元格格式与回答此问题无关)您的 Windows 区域日期设置是什么?
-
刚刚尝试了 CDbl 方法,它现在过滤了错误的列。而不是日期列 (C),它正在过滤引擎装备列 (A)。我的区域设置适用于英国,如果我将 TODAY 函数放入单元格中,我会得到 dd/mm/yyyy。我不完全确定您所说的“真正的 Excel 日期”而不是文本表示是什么意思?