格式日期返回错误结果

格式日期返回错误结果

我使用自动过滤宏来获取从今天到 3 个月的值,但虽然结果似乎正确,但格式化的日期显示错误:


Sub LastThreeMonths()

    Dim strDateFirst As String
    Dim strDateLast As String
    Dim strMonthNow As String
  
    strMonthNow = Month(Now)

    strDateFirst = (strMonthNow - 3) & "/" & "1" & "/" & frmEntry.cboYear.Value
    strDateLast = strMonthNow & "/" & LastDay(CDate(strMonthNow)) & "/" & frmEntry.cboYear.Value

    
    MsgBox Format(strDateFirst, "dd-mm-yyyy") & vbCrLf & Format(strDateLast, "dd-mm-yyyy")



End Sub

Debug.Print 返回strDateFirst2022 年 7 月 1 日的这个值和strDateLast2022 年 10 月 30 日的这个值,变量应为“2022 年 7 月 1 日” strDateFirst

但过滤器工作正常。

我遗漏了什么?我猜这与从当前月份中减去“3”有关。

答案1

使用正确的类型声明并使用 DateSerial 设置日期:

Sub LastThreeMonths()
    Dim DateFirst As Date
    Dim DateLast As Date

    DateFirst = DateSerial(frmEntry.cboYear.Value, Month(Now) - 3, 1)
    DateLast = DateSerial(frmEntry.cboYear.Value, Month(Now) + 1, 0)

    MsgBox Format(DateFirst, "dd-mm-yyyy") & vbCrLf & Format(DateLast, "dd-mm-yyyy")
End Sub

通过设置日期,0Month(Now) + 1返回当前月份的最后一天。

在此处输入图片描述

相关内容