在具有德国区域设置的计算机上使用 VBA 自动过滤器过滤日期问题
Posted
技术标签:
【中文标题】在具有德国区域设置的计算机上使用 VBA 自动过滤器过滤日期问题【英文标题】:FIltering dates with VBA autofilter on computers with German regional setting 【发布时间】:2022-01-09 04:58:38 【问题描述】:我正在尝试使用带有 AND 运算符的自动过滤功能过滤掉表中的特定日期。下面的代码非常适合将区域设置设置为 windows(美国英语)推荐的用户。但是,对于将计算机设置为德语的用户,自动过滤器不会返回任何内容。
似乎错误发生在下面代码 sn-p 的以下行中:
.AutoFilter field:=3, Criteria1:=">=" & startDate, Operator:=xlAnd, Criteria2:="<=" & endDate
我检查了过滤器中是否输入了日期以及它们的格式是否正确。这似乎不是问题。只有在我单击custom autofilter box 中的“确定”后,日期才会出现。有什么办法可以解决这个问题吗?谢谢:)
For t = 1 To timeline
''update forecast dates
Dim startDate As Date, endDate As Date
'for first month only consider second half of month
If t = 1 Then
startDate = "15/" & Month(Now) & "/" & Year(Now)
Else
startDate = DateSerial(Year(Now), Month(Now) + t - 1, 1) ' t-1 otherwise the forecast will skip a month
End If
endDate = DateSerial(Year(Now), Month(Now) + t, 0)
'filter out relevant data
With overview.Range("C10")
.AutoFilter field:=5, Criteria1:="Direct"
.AutoFilter field:=3, Criteria1:=">=" & startDate, Operator:=xlAnd, Criteria2:="<=" & endDate
End With
''put values into liquidity cash in out sheet
'cash in movement
liquidity.Cells(inputRow, 6 + t).Value2 = overview.Range("O7").Value2 'value input starts in column 7
'Drawdowns
liquidity.Cells((inputRow + 1), 6 + t).Value2 = overview.Range("R7").Value2 'value input starts in column 7
Next t
【问题讨论】:
【参考方案1】:这样,问题就解决了。我只需要将日期转换为导致问题的行中的双精度数。
.AutoFilter field:=3, Criteria1:=">=" & CLng(startDate), Operator:=xlAnd, Criteria2:="<=" & CLng(endDate)
https://www.mrexcel.com/board/threads/issues-filtering-dates-with-vba-autofilter-on-computers-with-german-regional-setting.1189265/
【讨论】:
以上是关于在具有德国区域设置的计算机上使用 VBA 自动过滤器过滤日期问题的主要内容,如果未能解决你的问题,请参考以下文章
excel vba自动过滤范围并删除col D中所有带0的行