2016-09-06 42 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

相关问题