所以我目前正在尝试制作一个代码来将当前日期与其他两个日期进行比较,以确定信息的有效性。例如,如果日期在一年的第一季度和第二季度之间,则文档上的信息截至第一季度日期(3 月 31 日)。以下是我目前所拥有的,出于某种原因,即使当前日期是在 7 月,代码一直说该信息截至 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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句