来自 vba 用户窗体的日期选取器传递的日期,用于对 excel 表格进行排序,格式错误

Date from vba userform datepicker passed used to sort excel table wrong format

提问人:BiGXERO 提问时间:6/12/2012 最后编辑:CommunityBiGXERO 更新时间:6/12/2012 访问量:3472

问:

当从日期选择器传递日期以对 excel 表进行排序时,格式在某个地方变得混乱并从 切换到 dd/mm/yyyy mm/dd/yyyy

我已经检查了我的区域设置,它们设置为dd/mm/yyy

Sub sortFuel()

With UserForm1
    With .dp_StartDate
        startDate = Format(.Value, "dd/mm/yyyy")
    End With
    With .dp_EndDate
        endDate = Format(.Value, "dd/mm/yyyy")
    End With
End With

MsgBox startDate
MsgBox endDate

With ws
    .ListObjects("Table_DFDBMain_FuelTrans4").Range.AutoFilter Field:= _
    3, Criteria1:=">=" & Format(startDate, "dd/mm/yyyy"), Operator:=xlAnd, Criteria2:="<=" & Format(endDate, "dd/mm/yyyy")
End With

End Sub

我表中的列已经按 dd/mm/yyyy 排序,但如果我选择 2012 年 5 月 7 日,它会在 2012 年 7 月 5 日出来。注意:仅当 day 列小于 12 时,它才会翻转。例如,如果我选择 6 月 24 日作为开始日期,它将保持 6 月 24 日。

任何帮助将不胜感激!

Excel-2007 用户窗体 VBA

评论


答:

0赞 Siddharth Rout 6/12/2012 #1

试试这个

Sub sortFuel()
    Dim D1 As Long, D2 As Long

    With UserForm1
        With .dp_StartDate
            startDate = Format(.Value, "dd/mm/yyyy")
        End With
        With .dp_EndDate
            endDate = Format(.Value, "dd/mm/yyyy")
        End With
    End With

    D1 = Val(Format(startDate, "0"))
    D2 = Val(Format(endDate, "0"))

    With ws
        .ListObjects("Table_DFDBMain_FuelTrans4").Range.AutoFilter Field:= _
        3, Criteria1:=">=" & D1, Operator:=xlAnd, Criteria2:="<=" & D2
    End With
End Sub