Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date VBA筛选日期转换为美国格式_Date_Excel_Vba - Fatal编程技术网

Date VBA筛选日期转换为美国格式

Date VBA筛选日期转换为美国格式,date,excel,vba,Date,Excel,Vba,我想筛选一个约会。我已经检查过了,控制面板知道我在英国。但当我过滤它时——它有问题,似乎使用的是美国日期格式,而不是英国。当您点击过滤器时,它会根据英国系统正确给出日期/月份 当我记录代码以查看发生了什么时,出现了以下情况。日期将被定义-我只是想弄清楚当我的过滤器无法工作时VBA在做什么 Sub dating() ActiveSheet.Range("$A$1:$AM$442").AutoFilter Field:=38, Operator:= _ xlFilterValues, C

我想筛选一个约会。我已经检查过了,控制面板知道我在英国。但当我过滤它时——它有问题,似乎使用的是美国日期格式,而不是英国。当您点击过滤器时,它会根据英国系统正确给出日期/月份

当我记录代码以查看发生了什么时,出现了以下情况。日期将被定义-我只是想弄清楚当我的过滤器无法工作时VBA在做什么

Sub dating()


ActiveSheet.Range("$A$1:$AM$442").AutoFilter Field:=38, Operator:= _
    xlFilterValues, Criteria2:=Array(2, "4/25/2014")
End Sub
我已经将代码更新为,但它仍然不会在该日期过滤,即使列中有该日期的数据。我可能错过了一些明显的东西

Dim dteInvoices As Date

dteInvoices = Worksheets("front sheet").Range("f14")

Worksheets("trade details").Range("A1").AutoFilter 39, strText
             .Range("A1").AutoFilter 38, CLng(dteInvoices)
多亏了他的帮助,我才使它工作起来

范围(“a1”)。自动筛选字段:=38,标准1:=“>=”&lngDate_

运算符:=xlAnd,准则2:=“这似乎是Excel的错误。筛选器只接受US格式的日期。使用DATEVALUE将文本转换为日期,然后使用CLNG将日期转换为数字是有意义的


编辑:有关解决方法,请参阅此线程:

使用Excel VBA AutoFilter时,日期可能会比较棘手。有些人发现,只需在要筛选的数组中循环即可

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


请注意,上面的内容必须是“真实日期”,而不是看起来像日期的字符串。即使是单个“字符串日期”也会把事情搞砸。

不是错误。在VBA中的任何地方,您都必须遵守美国惯例。这很好:否则,您必须根据用户设置使用不同的字符串!

我通常使用
格式(MyDate,\\\/mm\/dd\/yy\\\\”
来确定。

这可能是真的,但从用户的角度来看,VBA仍然不是结果:如果使用日期作为参数,它将转换为字符串(用户不知道)使用您的区域设置,但希望字符串为US locale。Louisa,您有5个问题,只有1个问题的答案是可接受的。您应该为每个问题接受1个答案,如果您收到了可接受的答案,我提出的许多问题都是在人们在评论中添加位时得到回答的。如果您看了我的评论,我已经将我的内容已经完成。我没有留下未答复的评论。当我之前使用double格式进行筛选时,它似乎可以工作。As double将其转换为整数。但这一次似乎不起作用。我将尝试你的方式。我有点困惑为什么它会被转换为字符串,因为excel中的日期肯定是日期格式,而不是文本。我更新了我的代码,并用新代码更新了原始问题。它给出了一个值,但过滤器不接受一个值(我在其他工作表上使用了一个值,但这一个不起作用)。
Range("a1").AutoFilter Field:=38, Criteria1:=">=" & lngDate, _
    Operator:=xlAnd, Criteria2:="<" & lngDate + 1
Criteria2:= CDbl([datecell])
Criteria2:= CLng(Dateserial(2014,4,25))