当您开始一个新的工作簿时,一种常见的情况要求创建一年的工作表,一年中的每个星期一次。换句话说,一个工作簿最终可能包含52或53个工作表,具体取决于特定年份的工作周数。

如果您需要创建这样的工作簿,那么就知道单独创建和命名所有工作表可能是一个真正的麻烦。这是宏将派上用场的地方。下面的宏将添加适当数量的工作表,然后根据周数(01到52)重命名所有工作表。

Sub YearWorkbook1()

Dim iWeek As Integer     Dim sht As Variant     Application.ScreenUpdating = False     Worksheets.Add After:=Worksheets(Worksheets.Count), _       Count:=(52 - Worksheets.Count)

iWeek = 1     For Each sht In Worksheets         sht.Name = "Week " & Format(iWeek, "00")

iWeek = iWeek + 1     Next sht     Application.ScreenUpdating = True End Sub

相反,如果需要一种方法来创建工作表以显示一年中每周的结束日期,则需要一个不同的宏。

Sub YearWorkbook2()

Dim iWeek As Integer     Dim sht As Variant     Dim sTemp As String     Dim dSDate As Date

sTemp = InputBox("Date for the first worksheet:", "End of Week?")

dSDate = CDate(sTemp)

Application.ScreenUpdating = False     Worksheets.Add After:=Worksheets(Worksheets.Count), _       Count:=(52 - Worksheets.Count)

For Each sht In Worksheets         sht.Name = Format(dSDate, "dd-mmm-yyyy")

dSDate = dSDate + 7     Next sht     Application.ScreenUpdating = True End Sub

此版本的宏要求您提供开始日期。然后,它将使用该日期开始在工作簿中命名不同的工作表。如果输入的值无法转换为日期,则宏将生成错误。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(12403)适用于Microsoft Excel 2007、2010、2013和2016。您可以在下面的Excel的较旧菜单界面中找到此技巧的版本:`link:/ excel-Naming_Tabs_for_Weeks [几周命名标签]。