vba - 美国和英国设置之间奇怪的日期过滤器行为 : VBA

标签 vba excel

我正在将过滤器应用于日期列,并且它在我的计算机上运行良好(美国区域设置)。当我将工作簿发送给英国的用户时,相同的过滤器失败(英国区域设置)。没有错误,过滤器只是失败并且没有过滤行。如果我手动设置 VBA 代码中返回的日期,则过滤器起作用。

'/ ALERT_DATE : named Range containing date. Cell Format is set as date.
'/ Column 5 in wksTemp contains all valid dates in correct format.

'/ Following code works fine in US Regional Settings.
    wksTemp.UsedRange.AutoFilter
    wksTemp.UsedRange.AutoFilter Field:=5, Criteria1:= _
    "<" & wksSettings.Range("ALERT_DATE")

    wksTemp.UsedRange.SpecialCells(xlCellTypeVisible).Copy wksDest.Cells(1, 1)
    Application.CutCopyMode = False

'/ Same code fails with UK settings. 

尝试过,Value2 , Format , DateSerial Nothings 似乎以英国格式过滤行。

在英国设置中,如果我手动设置 "<" & wksSettings.Range("ALERT_DATE") 的值例如28/05/2017在过滤器中,它起作用了。

任何想法。如何纠正这个问题,使其适用于英国和美国?

最佳答案

啊,DateFilter 的日期问题:)

最简单的解决方法是将日期转换为长日期。从 VBA 开始就有效,或者至少我这么认为。

wksSettings.Range("ALERT_DATE") ---->> Clng(wksSettings.Range("ALERT_DATE"))

试试这个:

  wksTemp.UsedRange.AutoFilter
    wksTemp.UsedRange.AutoFilter Field:=5, Criteria1:= _
    "<" & Clng(wksSettings.Range("ALERT_DATE"))

    wksTemp.UsedRange.SpecialCells(xlCellTypeVisible).Copy wksDest.Cells(1, 1)
    Application.CutCopyMode = False 

未经测试,但应该可以工作。

关于vba - 美国和英国设置之间奇怪的日期过滤器行为 : VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43478877/

相关文章:

excel - 访问文件时出错。网络连接可能已丢失

excel - VBA如何在没有.Select的情况下复制单元格的内容

excel - 从电源查询中调用 gpkg 上的 sqlite3 时激活 spatialite

vba - 连接和迭代多个单元格VBA excel

vba - 如何将所有类硬编码值保存在一个地方

来自单元格的 VBA Web 查询

XMLSS 样式继承

excel - 自动导出 Facebook Insights 数据

excel - Application.Calculate 和 Application.CalculateFull 之间有什么区别?

vba - 如何在excel vba中调用ThisWorkbook中的模块