首页 文章

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

提问于
浏览
0

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

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

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

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

任何帮助将不胜感激!

2 回答

  • 1

    您可以创建一个名为“Template”(可能隐藏)的工作表,其中包含所有代码和按钮,然后使用以下内容:

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

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

    Dim ws as Worksheet
    set ws = Activesheet
    ws.Range("A1") = "test"
    
  • 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
    

相关问题