我有一個包含各種作業表的作業簿(作業表名稱是這種格式 DD.MM.YYYY 的日期)
我正在使用以下宏來創建一個新作業表,洗掉給定范圍內的任何內容,并在新作業表上給出今天的日期:
ActiveSheet.Copy Before:=Sheets(1)
Range("B5:I" & Range("B4").End(xlDown).Row).Select
Selection.ClearContents
ActiveSheet.Name = Format(Date, "DD.MM.YYYY")
我還想創建一個新宏以洗掉前幾個月的作業表(本月除外)。我已經在這個執行緒上嘗試了給定的解決方案如何洗掉超過一個月的作業表?但沒有任何作業。
對vba不是很有經驗,所以歡迎任何幫助。作業在 2019 年的 excel 上。
uj5u.com熱心網友回復:
Option Explicit
Sub deleteSheetsByMonth()
Dim ws As Worksheet, a, dtWs As Date, dt1 As Date
Dim msg As String
dt1 = DateSerial(Year(Date), Month(Date), 1) ' 1st of month
For Each ws In ActiveWorkbook.Worksheets
If ws.Name Like "##.##.####" Then
a = Split(ws.Name, ".")
dtWs = DateSerial(a(2), a(1), a(0))
If dtWs < dt1 Then
msg = msg & vbLf & ws.Name
Application.DisplayAlerts = False
ws.Delete
Application.DisplayAlerts = False
End If
End If
Next
If msg <> "" Then
MsgBox "Sheets deleted:" & msg, vbInformation
Else
MsgBox "No Sheets deleted", vbInformation
End If
End Sub
uj5u.com熱心網友回復:
請嘗試下一個方法:
Sub deleteSheetsByMonth()
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
If IsDate(sh.Name) Then
If DateDiff("m", CDate(sh.Name), Date) > 0 Then sh.Delete
End If
Next sh
End Sub
有這樣的隱藏床單嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/406846.html
標籤:
