2013-05-14 19 views
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 

回答

3

假設沒有名爲工作表「大師(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 

它似乎很奇怪,沒有工作表對象從工作表中返回。複製方法。

使用xlDown獲取結束範圍時需要注意的一件事情 - 如果您的範圍中有零個單元格或一個單元格,xlDown將一直延伸到工作表的最後一行,這會產生不良行爲。在這種情況下,嘗試重命名目標工作表時會出錯,但需要注意。

+0

您給我的這個宏的工作原理恰到好處,但是您能否幫助我解決兩個問題....在名爲「Master」的工作表之後打開新選項卡是否有辦法在不同的工作表之後打開選項卡。另外,當基於主選項卡創建新選項卡時,我希望爲新選項卡命名的相同名稱顯示在新選項卡中的某個單元格中。 – user2382884 2013-05-14 20:13:46

+0

對於你的第一個問題,是的:http://msdn.microsoft.com/en-us/library/office/ff837784.asp – 2013-05-14 20:23:39

相關問題