当您开始一个新的工作簿时,通常在每个月的不同日期后给每个工作表命名。如果您做了很多,就会知道将每个工作表分别重命名为您真正需要的内容可能会很麻烦。

开发了以下宏来在这些情况下提供帮助。它检查工作簿中工作表的名称,如果它们以字母“ Sheet”开头,则将它们重命名为每月的某几天。如果工作簿中没有足够的工作表,则它会根据需要在每月的每一天添加工作表。

Sub DoDays()

Dim J As Integer     Dim K As Integer     Dim sDay As String     Dim sTemp As String     Dim iTarget As Integer     Dim dBasis As Date

iTarget = 13     While (iTarget < 1) Or (iTarget > 12)

iTarget = Val(InputBox("Numeric month?"))

If iTarget = 0 Then Exit Sub     Wend

Application.ScreenUpdating = False     sTemp = Str(iTarget) & "/1/" & Year(Now())

dBasis = CDate(sTemp)

For J = 1 To 31         sDay = Format((dBasis + J - 1), "dddd mm-dd-yyyy")

If Month(dBasis + J - 1) = iTarget Then

If J <= Sheets.Count Then                 If Left(Sheets(J).Name, 5) = "Sheet" Then                     Sheets(J).Name = sDay                 Else                     Sheets.Add.Move after:=Sheets(Sheets.Count)

ActiveSheet.Name = sDay                 End If             Else                 Sheets.Add.Move after:=Sheets(Sheets.Count)

ActiveSheet.Name = sDay             End If         End If     Next J

For J = 1 To (Sheets.Count - 1)

For K = J + 1 To Sheets.Count             If Right(Sheets(J).Name, 10) > _               Right(Sheets(K).Name, 10) Then                 Sheets(K).Move Before:=Sheets(J)

End If         Next K     Next J

Sheets(1).Activate     Application.ScreenUpdating = True End Sub

请注意,该宏假定您想要工作表的月份是当年。如果不是这种情况,则需要进行一些小的更改。请注意宏的开头附近的以下行:

sTemp = Str(iTarget) & "/1/" & Year(Now())

假设您实际上出于某种原因希望该月份为2015年。只需将行更改为以下内容:

sTemp = Str(iTarget) & "/1/2015"

宏将每个选项卡名称设置为等于星期几,然后等于实际日期,如“星期三03-28-2020”。如果要更改每天命名选项卡的方式,只需更改宏中sDay变量的构造方式。

宏的最后一步是根据月中的天数将工作表按适当的顺序放置。结果是,如果工作簿中还有其他工作表(换句话说,您有一些不以字母“ Sheet”开头的工作表,那么这些工作表将在工作簿的末尾,在每个工作表的后面)

| 注:

|如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)上描述的宏,我已经

| _ExcelTips_是您的

|此技巧(11523)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以找到此技巧的较旧版本。 Excel的菜单界面位于:

link:/ excel-Sheets_for_Days [Sheets for Days]