我有一份作業簿,其中包含本財政年度(“2021 年 7 月”到“2022 年 6 月”)各月的作業表。我希望隱藏與未來幾個月相對應的作業表。
我試過了:
Dim ws As Worksheet
Dim strMonth As String
strMonth = Format(Date, "MMM YYYY")
For Each ws in ActiveWorkbook.Worksheets
If ws.Name <= strMonth Then
ws.Visible = True
Else
ws.Visible = False
End If
Next ws
但是,這是按字母順序隱藏當前月份之后的所有作業表,而不是月份。
我知道這將是非常簡單的事情,我只使用 VBA 大約一個星期,所以感謝任何幫助??
uj5u.com熱心網友回復:
您可以使用CDate(例如,JUL 2021 變為 2021 年 7 月 1 日)將作業表名稱轉換為日期,而不是比較日期的文本表示,然后直接與Date.
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If IsDate(ws.Name) Then
ws.Visible = (CDate(ws.Name) < Date)
End If
Next
如果您想與月末進行比較(例如 2021 年 7 月變為 2021 年 7 月 31 日),那么一種選擇是WorksheetFunction.EoMonth:
Dim ws As Worksheet
For Each ws in ThisWorkbook.Worksheets
If IsDate(ws.Name) Then
Dim tempDate As Date
tempDate = WorksheetFunction.Eomonth(CDate(ws.Name), 0)
ws.Visible = (tempDate < Date) ' or maybe <=
End If
Next
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/382705.html
