Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA按钮从模板创建新图纸_Vba_Excel_Templates - Fatal编程技术网

VBA按钮从模板创建新图纸

VBA按钮从模板创建新图纸,vba,excel,templates,Vba,Excel,Templates,我是新手,所以我希望这是有意义的。 在下面的代码中,我有一个包含按钮的用户表单,单击该表单后,它将创建一个新的工作表,并根据表单上填写的文本字段重命名该工作表。我的工作簿中有一个模板工作表,我想知道是否有任何方法可以让用户表单中新创建的工作表遵循相同的模板。我还了解,这是创建图纸精确副本的代码: Dim i as byte for i=1 to 5 Sheets("TEMPLATE").Copy after:=sheets("TEMPLATE") Next I 但我不知道如何或是否可能将其与我

我是新手,所以我希望这是有意义的。 在下面的代码中,我有一个包含按钮的用户表单,单击该表单后,它将创建一个新的工作表,并根据表单上填写的文本字段重命名该工作表。我的工作簿中有一个模板工作表,我想知道是否有任何方法可以让用户表单中新创建的工作表遵循相同的模板。我还了解,这是创建图纸精确副本的代码:

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

什么都行!谢谢。

工作表。很遗憾,复制方法不会返回对新创建工作表的引用。但是,您可以通过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

非常好,谢谢。是否仍要执行此操作,但要在其他工作簿中创建工作表?如果复制方法中的“After:=”属性引用另一个工作簿中的工作表,它将复制到该工作簿(这将要求您具有对尝试将工作表复制到的工作簿的引用)。另外,如果您试图为每个副本创建一个新工作簿,.copy方法的默认行为是,如果您没有指定“Before”或“After”属性,则创建一个新工作簿。@Wedge copy方法会在单独的工作簿中创建一个新工作簿吗?因为我只希望它在单独的工作簿中创建,而不是在当前工作簿中创建。在没有参数的情况下调用Copy只会在新工作簿中创建副本。每次你这样做时,它都会创建一个新工作簿。如果要在单个新工作簿中编译所有工作表,则需要创建一个新工作簿,然后将工作表复制到该工作簿中。