Gilbert有一个工作表(名为“控件”),该工作表在单元格A1:A12中包含所需的工作表名称列表。他需要一种宏方式,根据该单元格范围来重命名工作簿中的其他12个工作表。工作表名称不必动态。他们只需要在他运行宏时重命名即可。

开发宏以解决此需求的核心是依赖于要重命名的每个工作表的Name属性。例如,您可以使用一个非常简单的宏,如下所示:

Sub RenameSheets()

Dim c As Range     Dim J As Integer

J = 0     For Each c In Range("A1:A12")

J = J + 1         If Sheets(J).Name = "Control" Then J = J + 1         Sheets(J).Name = c.Text     Next c End Sub

该宏仅浏览单元格区域A1:A12,如果下一个工作表未命名为“控件”,则它将工作表重命名为单元格值。

如前所述,此宏非常简单,并且很有可能会更健壮。例如,如果当前工作簿中的工作表多于(或少于)13个,应该怎么办?如果在A1:A12范围内有空单元格该怎么办?如果有人运行宏并且“控件”不是活动工作表,该怎么办?

如果A1:A12中有两个相同的值怎么办?如果一个或多个名称在A1:A12范围内有前导或尾随空格怎么办?这些以及(很可能是)其他一系列问题都可能影响宏的最终外观。这是宏的注释版本,其中考虑了刚才提到的几种可能性:

Sub RenameSheets()

Dim c As Range     Dim J As Integer     Dim K As Integer     Dim sName As String     Dim w(12) As String     Dim bGo As Boolean     Dim sTemp As String

bGo = True     If Worksheets.Count <> 13 Then         ' Check to make sure exactly 13 worksheets in workbook         bGo = False         sTemp = "There are more than 13 worksheets."

End If     If ActiveSheet.Name <> "Control" Then         ' Check to make sure Control is active         bGo = False         sTemp = "Control worksheet is not active."

Else         ' Check for empty and duplicate cells in range         J = 0         For Each c In Range("A1:A12")

sName = Trim(c.Text)

If sName <> "" Then                 For K = 1 to J                     If LCase(w(K)) = LCase(sName) Then                         bGo = False                         sTemp = "Duplicate sheet names in list."

End If                 Next K                 If bGo Then                     ' Everything still good; add name                     J = J + 1                     w(J) = sName                 End If             End If         Next c     End If

If bGo Then         K = 0         For J = 1 To 12             K = K + 1             If Sheets(K).Name = "Control" Then K = K + 1             Sheets(K).Name = w(J)

Next J     Else         MsgBox(sTemp)

End If End Sub

注意宏的第二个版本比第一个版本长多少?每当您开始在宏中添加多个检查时,它的确比没有检查时要长得多。当然,添加支票的好处是,您的宏被您以外的其他人使用时,不太可能出现问题。

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

本技巧(1506)适用于Microsoft Excel 2007、2010、2013和2016。