对于包含多个工作表的 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