繁体   English   中英

Excel VBA:日期比较

[英]Excel VBA: Date Comparison

因此,我目前正在尝试编写代码以将当前日期与其他两个日期进行比较,以确定信息的有效性。 例如,如果日期在一年的第一季度和第二季度之间,则该文档上的信息以第一季度的日期(3月31日)为准。 以下是我目前拥有的内容,由于某种原因,即使当前日期为七月,代码仍会说该信息自3月31日起有效。有人有任何建议吗?

crntDate = Date
q1End = CDate("Mar 31" & " " & Year(Date))
q2End = CDate("Jun 30" & " " & Year(Date))
q3End = CDate("Sep 30" & " " & Year(Date))
q4End = CDate("Dec 31" & " " & Year(Date))

If q1End <= crntDate <= q2End Then
    quart = "Q1" & " " & Year(Date)
ElseIf q2End <= crntDate <= q3End Then
    quart = "Q2" & " " & Year(Date)
ElseIf q3End <= crntDate <= q4End Then
    quart = "Q3" & " " & Year(Date)
Else
    quart = "Q4" & " " & Year(Date)
End If

shName = "Quarterly Reporting for" & " " & firstName & " " & lastName & " " & "(" & quart & ")"
With wdApp.ActiveDocument
    .SaveAs2 "https://path/" & shName & ".docx"
    .Close
End With

如果您尝试将日期格式设置为季度,则不需要所有的结束日期和比较,可以在VBA中使用整数除法\\

Sub test()

  Dim quart As String
  quart = GetDateAsQuarterYear(VBA.Date)

  shName = "Quarterly Reporting for" & " " & firstName & " " & lastName & " " & "(" & quart & ")"
  With wdApp.ActiveDocument
    .SaveAs2 "https://path/" & shName & ".docx"
    .Close
  End With
End Sub

Function GetDateAsQuarterYear(crntDate As Date) As String

  Dim quarterEnd As Date
  quarterEnd = DateSerial(Year(crntDate), 1 + 3 * (1 + (Month(crntDate) - 1) \ 3), 0)

  GetDateAsQuarterYear = "Q" & 1 + (Month(crntDate) - 1) \ 3 & " (" & Format$(quarterEnd, "mmmm d, yyyy") & ")"

End Function

q1End <= crntDate <= q2End在Excel中不起作用,它必须是:

q1End <= crntDate  and crntDate <= q2End

所以

crntDate = Date
q1End = CDate("Mar 31" & " " & Year(Date))
q2End = CDate("Jun 30" & " " & Year(Date))
q3End = CDate("Sep 30" & " " & Year(Date))
q4End = CDate("Dec 31" & " " & Year(Date))

If q1End <= crntDate  and crntDate <= q2End Then
    quart = "Q2" & " " & Year(Date)
ElseIf q2End <= crntDate  and crntDate <= q3End Then
    quart = "Q3" & " " & Year(Date)
ElseIf q3End <= crntDate  and crntDate <= q4End Then
    quart = "Q4" & " " & Year(Date)
Else
    quart = "Q1" & " " & Year(Date)
End If

shName = "Quarterly Reporting for" & " " & firstName & " " & lastName & " " & "(" & quart & ")"
With wdApp.ActiveDocument
    .SaveAs2 "https://path/" & shName & ".docx"
    .Close
End With

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM