在主工作表中填写单元格后,如何从模板自动添加工作表?

时间:2019-06-01 22:56:15

标签: excel vba templates worksheet

我有一个带有两个工作表“ Master”和“ Template”的excel工作簿 我要在工作表“主”中填写范围A2:A20中的单元格后复制“模板”,并用A2:20值命名一个新工作表。 我想将值从两个单元格的主表复制到新创建的工作表中(从主单元格A2:B2到新表(名称为A2)到单元格D1:D2)。 我想对每个填写的单元格A2:A20进行此操作,这样它就不会为来自A2:A20的空白单元格创建新的工作表。

因此,如果我填写了A2A4A5,我将得到3个新工作表,例如模板工作表,其名称分别为A2,{{ 1}}和A4。在母版的第一个新工作表A5中,将复制到A2:B2。在第二个新工作表D1:D2中,将其复制到A4:B4,在第三个新工作表中,D1:D2将被复制到A5:B5

打开excel后,我想完成此操作,一旦完成,就不要重复

这可能吗?

非常感谢您的帮助

D1:D2

1 个答案:

答案 0 :(得分:0)

将此代码放在Excel文件的“工作簿”模块中。

Option Explicit

Private Sub Workbook_Open()

    With Worksheets("Master")

        'check if sheet creation process has happened already
        If .Cells(1, .Columns.Count).Value = "" Then

            Dim c As Range

            Application.ScreenUpdating = False

            For Each c In .Range("A2:A20")

                Worksheets("Template").Copy After:=Sheets(Sheets.Count)

                With c

                    ActiveSheet.Name = .Value

                    .Parent.Hyperlinks.Add Anchor:=c, Address:="", SubAddress:= _
                         "'" & .Text & "'!A1", TextToDisplay:=.Text

                End With

            Next c

            .Cells(1, .Columns.Count).Value = "created" 'mark cell as created so it skips next time and each time after

    End With

End Sub

ThisWorkbook类模块:

enter image description here