Excel 在VBA筛选器中从dd mm切换到mm dd的日期

Excel 在VBA筛选器中从dd mm切换到mm dd的日期,excel,vba,date,Excel,Vba,Date,我正在尝试使用VBA在Excel中按日期筛选 当进入过滤器时,日期转换为美国日期,而不是欧洲日期 表中的日期格式为短日期,输入文本框的日期格式正确 dateselect是激活过滤器的复选框,datestart和datefinish是保存日期的文本框 If dateselect = True Then With Worksheets("Data").Range("C:C") .AutoFilter field:=1, Operator:=xlAnd, Criteria1:="

我正在尝试使用VBA在Excel中按日期筛选

当进入过滤器时,日期转换为美国日期,而不是欧洲日期

表中的日期格式为短日期,输入文本框的日期格式正确

dateselect是激活过滤器的复选框,datestart和datefinish是保存日期的文本框

If dateselect = True Then

    With Worksheets("Data").Range("C:C")
      .AutoFilter field:=1, Operator:=xlAnd, Criteria1:=">=" & Datestart, Criteria2:="<=" & datefinish
    End With

End If
如果dateselect=True,则
带有工作表(“数据”)。范围(“C:C”)

.AutoFilter字段:=1,运算符:=xlAnd,准则1:=“>=”&Datestart,准则2:=“=”&Format(Datestart,dd/mm/yyyy),准则2:=”如果在单元格中使用日期值,如=TODAY()的结果,则可以将
范围.AutoFilter
CDbl
比较一起使用

通过
CDate
可以确保变量“datestart”和“datefinish”也是日期值

CDbl
工作几乎完美,因为日期值内部由整数部分(自1900年起的天数)及其小数部分(一天的一部分,即小时、分钟、秒)组成

带有工作表(“数据”)。范围(“C:C”)
.自动筛选字段:=1_
运算符:=xlAnd_
准则1:=“>=”&CDbl(CDate(datestart))_

准则2:=“此代码是否在
工作表\u Change
事件中?请尝试使用
DateValue
当您按下按钮时,该代码将被激活,并且位于该按钮的宏中。”。有更多的数据围绕它,但这与这个问题无关。刚刚尝试了DateValue,但它仍然被转换。日期是“真正的Excel日期”而不是日期的文本表示吗?(单元格格式与回答此问题无关)您的windows日期区域设置是什么?刚刚尝试了CDbl方法,它现在正在筛选错误的列。它将过滤engine rig列(A),而不是date列(C)。我的区域设置是针对英国的,如果我今天将函数放入单元格中,我会得到dd/mm/yyyy。我不完全确定你所说的“真正的Excel日期”而不是文本表示法是什么意思?只是尝试了一下,它现在过滤了错误的列,A而不是C。我现在真的很困惑。但是,它添加到过滤器中的数字在以日期格式输入时给出了正确的日期。好的,将字段更改为3,它现在可以正确过滤。谢谢你的帮助。
If dateselect = True Then

    With Worksheets("Data").Range("C:C")
      .AutoFilter field:=1, Operator:=xlAnd, Criteria1:=">=" & Format(Datestart, dd/mm/yyyy), Criteria2:="<=" & Format(datefinish, dd/mm/yyyy)
    End With

End If
With Worksheets("Data").Range("C:C")
    .AutoFilter field:=1, _
    Operator:=xlAnd, _
    Criteria1:=">=" & CDbl(CDate(datestart)), _
    Criteria2:="<=" & CDbl(CDate(datefinish))
End With
With Worksheets("Data").Range("C:C")
    .AutoFilter field:=1, _
    Criteria1:="<=" & CDbl(myDate), Operator:=xlAnd, _
    Criteria2:=">=" & CDbl(myDate)