美国和英国之间奇怪的date过滤行为设置:VBA
我将filter应用于date列,并在我的机器上正常工作(美国区域设置)。 当我将工作簿发送给英国的用户时,相同的filter失败(英国区域设置)。 没有错误,filter只是失败,没有行被过滤。 如果我手动设置VBA代码返回的date,filter工作。
'/ 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.
试图,值2, Format
, DateSerial
nothings似乎过滤英国格式的行。
在英国设置中,如果我在filter中手动设置了"<" & wksSettings.Range("ALERT_DATE")
的值"<" & wksSettings.Range("ALERT_DATE")
例如28/05/2017
"<" & wksSettings.Range("ALERT_DATE")
,则可以使用。
有任何想法吗。 如何纠正这个问题,使之适用于英国和美国?
啊,date问题与DateFilter 🙂
最简单的修复方法,将您的date转换为长整型 从VBA开始工作,至less我是这么认为的。
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
没有testing,但应该工作。