0

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

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

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

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
4

1 回答 1

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

于 2013-05-14T18:55:56.867 回答