dateVBA过滤转换为美国格式

我正在尝试过滤date。 已经检查,控制面板知道我在英国。 但是,当我过滤它 – 它有问题,似乎使用美国的date格式,而不是英国。 当你点击filter时,它会根据英国系统正确地给出date/月份。

当我logging下代码来看看发生了什么后, date将被定义 – 我只是想弄清楚什么时候我的filter无法正常工作的VBA。

Sub dating() ActiveSheet.Range("$A$1:$AM$442").AutoFilter Field:=38, Operator:= _ xlFilterValues, Criteria2:=Array(2, "4/25/2014") End Sub 

我已经更新了代码,它仍然不会过滤该date,即使该列中有该date的数据。 我可能在这里丢失了一些明显的东西

 Dim dteInvoices As Date dteInvoices = Worksheets("front sheet").Range("f14") Worksheets("trade details").Range("A1").AutoFilter 39, strText .Range("A1").AutoFilter 38, CLng(dteInvoices) 

感谢来自http://www.ozgrid.com/VBA/autofilter-vba-dates.htm的帮助,我设法让它工作

http://www.ozgrid.com/VBA/autofilter-vba-dates.htm

 Range("a1").AutoFilter Field:=38, Criteria1:=">=" & lngDate, _ Operator:=xlAnd, Criteria2:="<" & lngDate + 1 

不是一个错误。 在VBA的每一个地方,你都必须遵守美国的惯例。 这是好的,否则根据用户设置,必须使用不同的string!
我一般使用Format(MyDate, "\#mm\/dd\/yy\#")来确定。

Excel VBA自动筛选date可能会非常棘手。 有些人发现只需循环访问数组即可进行过滤。

有时我发现可以使用date的数字值,特别是在处理“date之间”

 Criteria2:= CDbl([datecell]) 

要么

 Criteria2:= CLng(Dateserial(2014,4,25)) 

请注意,以上需要是“真正的date”,而不是看起来像date的string。 即使是一个单一的“stringdate”也会搞砸了。

这似乎是Excel的一个错误。 该filter只接受美国格式的date。 使用DATEVALUE将文本转换为date,然后使用CLNG将date转换为数字是有意义的。

编辑:请参阅此线程的解决方法: 使用VBA在数据透视表中的两个date之间进行过滤。 英国到美国的date格式问题