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格式问题