Naming Tabs for Weeks

When you are starting a new workbook, one common scenario calls for creating a year’s worth of worksheets, one for each week of the year. In other words, a workbook could end up containing 52 or 53 worksheets, depending on how many weeks there are in a particular year.

If you have a need to create such a workbook, you know that individually creating and naming all the worksheets can be a real hassle. This is where a macro would come in handy. The following macro will add the appropriate number of worksheets, and then rename all of the worksheets according to week number (01 through 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

If you instead need a way to create worksheets that show the ending date of each week for a year, then a different macro is needed.

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

This version of the macro asks you for a beginning date. It then uses that date to start naming the different worksheets in the workbook. If you enter a value that cannot be translated to a date, then the macro will generate an error.