VBA问题与日期

时间:2015-02-17 06:09:41

标签: vba excel-vba excel

我需要应用自动过滤器来选择特定日期范围内的数据。日期范围也是字符串。该代码工作正常,但它实际上已将日期更改为美国格式,因此2015年2月6日现在是2015年6月2日。

Dim mindate, maxdate, fixedmindate, fixedmaxdate As String

mindate = "060215"
maxdate = "120215"

fixedmindate = DateSerial(Right(mindate, 2), Mid(mindate, 3, 2), Left(mindate, 2))
fixedmaxdate = DateSerial(Right(maxdate, 2), Mid(maxdate, 3, 2), Left(maxdate, 2))
Dim LastRow As Long
With ActiveSheet
    LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With

ActiveSheet.Range("A1:CQ" & LastRow).AutoFilter Field:=3, Criteria1:="CHECK"
ActiveSheet.Range("A1:CQ" & LastRow).AutoFilter Field:=23, Criteria1:=">=" & fixedmindate, Operator:=xlAnd, Criteria2:="<=" & fixedmaxdate

1 个答案:

答案 0 :(得分:0)

由于区域格式问题&#39;

,可能会发生这种情况

从&#39;日期&#39;更改excelsheet中日期的数字格式格式类别为&#39; text&#39 ;; 保存。保存后运行VBA代码。现在检查日期格式是否为&#39; text&#39;或者改回日期&#39;。

如果已更改回&#39; date&#39;尝试将其修改为&#39; text&#39;

如果它&#39;文字&#39 ;;更正错误的日期单元格并保存Excel工作表。这将使日期不会自动更改为美国格式。

(您可以通过再次运行VBA代码来确认)