Excel VBA:date比较

所以我现在正在试着做一个代码来比较当前date和其他两个date,以确定信息的有效性。 例如,如果date在一年的第一季度到第二季度之间,则该文件的信息是截至第一季度的date(3月31日)。 以下是我目前所拥有的,由于某些原因,即使当前date是在七月份,代码仍然说这些信息在三月三十一日有效。任何人有什么build议吗?

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 

如果你想把date格式化为宿舍,你不需要所有的结束date和比较,你可以在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