美国和英国之间奇怪的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, FormatDateSerial 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,但应该工作。