将VBA代码添加到动态创建的Excel工作表中

时间:2018-02-01 21:58:17

标签: excel vba excel-vba excel-2007

我正在处理一个包含一个初始工作表的Excel工作簿。第一张表格是一个表格,询问用户他们的项目中有多少项目。然后,宏为项目中的每个项目生成一个工作表。

每个生成的工作表都有执行特定功能的按钮,这些按钮在工作表代码中都有与之相关的点击事件。

我已经在静态表格中编写了表格中所需的所有功能。

我想知道是否有办法获取此代码,并在表单创建所有格式和按钮后将其导入所有动态创建的工作表。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

你可以创建一个名为" Template" (可能隐藏)包含所有代码和按钮,然后使用这样的东西:

Sheets("Template").Copy After:=Sheets(Sheets.count)

此时,Activesheet将是新复制的工作表,因此您可以定义一个变量来引用它并进行所需的所有更改。例如:

Dim ws as Worksheet
set ws = Activesheet
ws.Range("A1") = "test"

答案 1 :(得分:0)

正如@cyboashu所说,只需复制工作表,它将复制所有公式和格式。此时,仍然可以对单个工作表进行任何其他更改。它们不是链接副本。

这是一个快速而脏的宏,用于将工作表(1)复制到工作簿的末尾并重命名。如果需要进行任何格式化,可以在使用ActiveSheet进行粘贴后立即执行此操作。将新的Activesheet分配给变量以便稍后引用是更好的做法,但我不能100%确定如何在不进一步深入的情况下做到这一点。也许有人可以详细说明。

    Sub copysheet()
    Dim Mainws As Worksheet
    Dim Mainwb As Workbook
    Set Mainwb = ThisWorkbook
    Set Mainws = ThisWorkbook.Worksheets(1)

    i = Mainwb.Worksheets.Count

    With Mainwb
       Mainws.Copy after:=Worksheets(i)
       Worksheets(i + 1).Name = "Copied Worksheet"
    End With
    With ActiveSheet
        Cells(1, 1).Value = "Copied Sheet"
        'other formatting changes
    End With

    'increment i variable if you plan to make more copies in a loop
    'i = Mainwb.Worksheets.Count

    End Sub