如何对大型 Excel 工作簿中的工作表重新编号?

如何对大型 Excel 工作簿中的工作表重新编号?

对于包含多个工作表的 Excel 工作簿,如果插入或删除工作表,手动重命名这些工作表可能会很困难:

 Intro-A   <<== Skip this one, please
 Intro-B   <<== Skip 
 Intro-C   <<== Skip 
 Main-1    <<== Start renumbering here
 Main-2
 Main-3
           <<== Deleted
 Main-5
 Main-6...

等等。如果我在序列中插入或删除一张表,我必须手动重新编号这些表。如何使用 VBA 完成此操作以节省时间?

答案1

使用宏

我发现在博客上回答,Neseef.com 的“系统管理员笔记”,它满足了我的大部分需求。我添加了跳过介绍表、提示前缀以及避免插入表时发生名称冲突的功能。

宏不需要位于同一工作簿中。这意味着您不需要将工作簿重新保存为*.xlsm文件。它可以位于不同的工作簿中,只要两者同时打开即可。

  • 警告: 节省开始工作之前请阅读工作簿!
  • 您可以将下面的宏添加到您的工作簿中,或者您可以创建一个新的工作簿——将包含宏的工作簿保存为*.xlsm(启用宏的工作簿)。
  • 像往常一样,Alt- F11:插入:模块并粘贴下面的宏。
  • Alt使用-返回工作簿F4
  • Alt使用-F8和“OK”运行宏。
' ** Rename Sheets ** 2020-09-10
' If you need to renumber your sheets sequentially, with a prefix,
' Like "AA-1, AA-2, AA-3" or "XX-A, XX-1, XX-2"..
' Suggested by this method: https://neseef.com/2019/03/31/excel-rename-multiple-worksheets-vbs/
' Use only on saved worksheets.  As-is.

Sub RenamingSheets()

Dim myPrefx As String

myStartSheet = InputBox("What sheet to start with? (1=first)", "Renaming Sheets")
myPrefx = InputBox("What prefix should the sheet names have?  (`BG-`, `Sheet`, etc.)", "Renaming Sheets")
myNum = InputBox("What's the first number you want to name the sheets?", "Renaming Sheets")

'Clear the names so there are no collisions
'(Temporarily set the name to a hopefully unique name)

For ws = myStartSheet To Worksheets.Count
    Sheets(ws).name = "Foo" & Worksheets.Count + ws
Next ws

'Now renumber

For ws = myStartSheet To Worksheets.Count
    Sheets(ws).name = myPrefx & myNum
    myNum = myNum + 1
Next ws

End Sub

相关内容