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

时间:2013-05-14 18:06:33

标签: excel vba

我想从主工作表中的“项目”列表中创建工作表。创建工作表时,我希望将其重命名为列表中的项目编号。

我找到了两个完成这项工作的宏,但我需要它们一起工作。

这个创建标签并重命名。

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

这个复制主标签并创建另一个工作表。

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

1 个答案:

答案 0 :(得分:3)

假设工作簿中没有名为“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将一直延伸到工作表的最后一行,这将产生不良行为。在这种情况下,尝试重命名目标工作表时会出错,但需要注意。