2016-09-06 62 views
0

我有一個模板表,我已經設置了名爲「Template」的模板表。根據循環中單元格值的範圍複製和重命名模板工作表

我在另一個工作表上有一個名爲「Formulation」的單元格範圍,我希望它能查看範圍「G7:W7」並創建一個「Template」副本並相應地重命名它。

我已經修改了我找到的一段代碼,但我一直遇到運行時錯誤13 - 類型不匹配。

下面是代碼:

`Sub CopyInfoSheetandInsert() 
' 
' CopyInfoSheetandInsert Macro 
' 
Dim rcell As Range 
Dim Background As Worksheet 
Set Background = Sheets("Formulation") 

For Each rcell In Range("D7:W7") 

    If rcell.Value <> "" Then 

      Sheets("Template").Copy Before:=Sheets("COSHH") 
      Sheets("Template (2)").Name = rcell.Value 

    End If 

Next rcell 



End Sub 

任何意見將不勝感激!

UPDATE

通過移動宏按鈕配方頁複印功能現在工作然而,在下面的代碼行我現在得到一個標超出範圍的錯誤?

Sheets("Template(2)").Name = rcell.Value 

親切的問候,

艾丹

+2

在哪條線路? rcell.value的價值是什麼? – newguy

+0

所以在該範圍內有幾個合併的單元格通常包含增量文本,即「A」,「B」,「C」,但它也可以包含說「A1」,「A2」,「A3」的文本。 – vividillusion

+1

它可能無法解決您的問題,而不是假設新工作表將被稱爲「Template(2)」爲什麼不使用'Sheets(表格(「COSHH」)。Index = 1).Name = rcell.Value' –

回答

1

你需要的東西,如:

Sub CopyInfoSheetandInsert() 

Dim rcell As Range 
Dim Background As Worksheet 
Set Background = Sheets("Formulation") 

For Each rcell In Range("D7:W7") 

    If rcell.Value <> "" And SheetExists(rcell.Value) = False Then 

      Sheets("Template").Copy Before:=Sheets("COSHH") 
      Sheets(Sheets("COSHH").Index - 1).Name = rcell.Value 

    End If 

Next rcell 
End Sub 

Function SheetExists(SheetName) As Boolean 
Dim sht As Worksheet 

'Assume Failure 
SheetExists = False 

For Each sht In ActiveWorkbook.Sheets 
    If sht.Name = SheetName Then 
     'Success 
     SheetExists = True 
     Exit Function 
    End If 
Next sht 

End Function 
+0

還不夠詳細..例如 它已生成工作表..「A」,「B」.. 如果我現在將「C」添加到「 Formulation「頁面。它將表格複製爲」Template(2)「,我認爲它仍然試圖將其命名爲」A「,因爲我收到」Name is already taken「錯誤。 再次感謝您的耐心和您的幫助! – vividillusion

+0

百萬謝謝你! – vividillusion

+0

你好! 你的代碼工作完全完美,但我似乎已經打破了它,沒有實際改變代碼! 我已經將它合併到一個模塊中,該模塊調用2個先前寫入的子集,但是現在我在下面一行中得到類型不匹配(錯誤13): 如果rcell.Value <>「」SheetExists(rcell.Value) =假然後 任何想法?抱歉再次纏住你,但我確信它很簡單。 親切的問候 (我正在運行它從一個不同的頁面,但即使只分配您的代碼並運行它,我得到相同的錯誤) – vividillusion

相關問題