2017-03-07 54 views
0

我是新来的Excel,所以我希望这是有道理的。 在下面的代码中,我有一个包含按钮的用户表单,一旦点击它,它将创建一个新工作表并重命名与表单上填写的文本字段对应的工作表。我在工作簿中有一个模板工作表,我想知道是否有任何方法可以使用户窗体中新创建的工作表遵循相同的模板。我也明白,这是创建一个表的精确副本代码:VBA按钮从模板创建新工作表

Dim i as byte 
for i=1 to 5 
Sheets("TEMPLATE").Copy after:=sheets("TEMPLATE") 
Next I 

但我不知道如何或是否可能与我的代码,以适应它:

If Me.cbStores.Value = "Northern/Northmart" Then 
Dim sh As Worksheet 
Set sh = Sheets.Add 
sh.Name = AddEmployeeUF.txtFirstname.Text + AddEmployeeUF.txtMiddleinitial.Text + AddEmployeeUF.txtLastname.Text + "Template" 
ws.Hyperlinks.Add Anchor:=ws.Range("F" & LastRow), Address:="", SubAddress:=sh.Name & "!A1", TextToDisplay:="View" 
End If 

任何帮助!谢谢。

回答

1

不幸的是,Sheets.Copy方法不会返回对新建表单的引用。但是,您可以以activeSheet的形式轻松访问它。

Dim i as byte, sh as worksheet 
for i=1 to 5 
    Sheets("TEMPLATE").Copy after:=sheets("TEMPLATE") 
    set sh = activeSheet 
    ' Do whatever you have to do with the new sheet 
    sh.Name = AddEmployeeUF.txtFirstname.Text + AddEmployeeUF.txtMiddleinitial.Text + AddEmployeeUF.txtLastname.Text + "Template" 
    ws.Hyperlinks.Add Anchor:=ws.Range("F" & LastRow), Address:="", SubAddress:=sh.Name & "!A1", TextToDisplay:="View" 
Next I 
+0

这很好用,谢谢。无论如何要做到这一点,但有工作表创建在不同的工作簿? –

+0

如果您在复制方法中创建“After:=”属性,请参阅其他工作簿中的工作表,它将复制到该工作簿(这将要求您有工作簿的引用正在尝试复制工作表)。此外,如果您试图为每个副本创建一个新的工作簿,则.Copy方法的默认行为是在未指定“之前”或“之后”属性的情况下创建新工作簿。 – Wedge

+0

@Wedge将复制方法创建一个单独的工作簿以及当前的?因为我只希望它在单独的工作簿中创建它,而不是当前的工作簿。 –