在具有德国区域设置的计算机上使用 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 自动过滤器过滤日期问题的主要内容,如果未能解决你的问题,请参考以下文章

VBA:如何从过滤后的数据中获取当前区域?

excel vba自动过滤范围并删除co​​l D中所有带0的行

VBA-如何选择具有值的列单元格

需要帮助使用 VBA 在 excel 中将超链接插入到我计算机上的指定图片

VBA使用自动筛选器将值复制到另一个工作表

尝试保存时 VBA 宏抛出错误(但仅在一台计算机上)