我将过滤器应用于日期列并在我的机器上正常工作(美国区域设置)。当我将工作簿发送给英国的用户时,相同的过滤器失败(英国区域设置)。没有错误,过滤器只是失败而不是过滤行。如果我手动设置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
,则可以正常工作。
任何想法。如何纠正这一点,以便它适用于英国和美国?
答案 0 :(得分:3)
啊,DateFilter的Date问题:)
最简单的修复,将您的日期转换为长。从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
没有经过测试,但应该可以使用。