首页 > 解决方案 > 将模板复制到新工作表中,名称来自单元格

问题描述

我创建了一个生成新工作表的工作簿,其中新工作表的名称取自第一个工作表中的单元格。

我希望这些新工作表成为另一张工作表的副本。

所以表格“dispostition”是我在“a2:a2000”范围内写名字的地方。例如。233.

233 成为一个新工作表,它是工作表“模板”的副本。

我对 VBA 非常缺乏经验,所以代码是我在网上资助和修改的。

我试图将 Worksheet.add 更改为 Worksheet(template).copy

但这似乎没有奏效。

Sub CreateSheets()
    Dim StartSheet As Worksheet
    Set StartSheet = ActiveSheet
    Dim rng As Range
    Dim cell As Range
    On Error GoTo Errorhandling
    
    If MsgBox("Opret ark baseret på løbenumre?", vbYesNo + vbQuestion) = vbNo Then
    Exit Sub
    End If
    
    Set rng = Range("A2:a2000")
    For Each cell In rng
        If cell <> "" Then
            Worksheets.Add(After:=Worksheets("disposition")).Name = cell
            Sheets("Template").Copy Worksheets(cell).Range("A1")
        End If
    Next cell
    
    Errorhandling:
    StartSheet.Activate
End Sub

标签: excelvbatemplatescopy

解决方案


无需添加新工作表,只需使用Worksheet.Copy 方法直接复制它:

If cell <> "" Then
    Worksheets("Template").Copy After:=Worksheets("disposition") 'adds a copy of the template sheet after disposition
    Worksheets(Worksheets("disposition").Index + 1).Name = cell.value 'renames the new added template copy (which is +1 after disposition sheet)
End If

推荐阅读