基于主工作表创build工作表,然后重命名每个选项卡

我想从主工作表的“项目”列表中创build工作表。 当创build一个工作表时,我希望它被重命名为列表中的项目编号。

我发现了两个macros来完成这个工作,但我需要他们一起工作。

这个创build选项卡并重命名它们。

Sub CreateSheetsFromAList() Dim MyCell As Range, MyRange As Range Set MyRange = Sheets("Invoice Summary").Range("B11") Set MyRange = Range(MyRange, MyRange.End(xlDown)) For Each MyCell In MyRange Sheets.Add After:=Sheets(Sheets.Count) 'creates a new worksheet Sheets(Sheets.Count).Name = MyCell.Value ' renames the new worksheet Next MyCell End Sub 

这一个副本主选项卡,并创build另一个工作表。

 Sub Test() Dim ws1 As Worksheet Set ws1 = ThisWorkbook.Worksheets("Master") ws1.Copy ThisWorkbook.Sheets(Sheets.Count) End Sub 

假设您的工作簿中没有名为“Master(2)”的工作表,该代码应该可以工作:

 Sub CreateSheetsFromAList() Dim ws1 As Worksheet Set ws1 = ThisWorkbook.Worksheets("Master") Dim MyCell As Range, MyRange As Range Set MyRange = Sheets("Invoice Summary").Range("B11") Set MyRange = Range(MyRange, MyRange.End(xlDown)) For Each MyCell In MyRange ws1.Copy ThisWorkbook.Sheets(Sheets.Count) ThisWorkbook.Worksheets("Master (2)").Name = MyCell.Value Next MyCell End Sub 

从Worksheet.Copy方法返回没有工作表对象似乎很奇怪。

使用xlDown获取结束范围时需要注意的一件事情 – 如果您的范围中有零个单元格或一个单元格,xlDown将一直延伸到工作表的最后一行,这会产生不良的行为。 在这种情况下,尝试重命名目标工作表时会出现错误,但需要注意。