【问题标题】:Add VBA code to dynamically created Excel sheets将 VBA 代码添加到动态创建的 Excel 工作表
【发布时间】:2018-07-12 08:23:11
【问题描述】:

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

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

我已经在静态工作表中将工作表中所需的所有功能都编码出来了。

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

任何帮助将不胜感激!

【问题讨论】:

  • 只创建一个工作表的副本,所有的代码都会被复制过来。
  • 我可以使用 VBA 复制工作表吗?
  • 嗨@user2796352 - 你能分享一下你到目前为止有什么吗?
  • 我什至不知道要分享什么,到目前为止大约有 800 行

标签: vba excel excel-2007


【解决方案1】:

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

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

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

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

【讨论】:

  • 在哪里设置 ws 变量?这是在单独的模块中吗?
【解决方案2】:

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

这是一个快速而肮脏的宏,用于将 worksheet(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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-25
    • 1970-01-01
    相关资源
    最近更新 更多