【问题标题】:Excel VBA: Insert N number of Sheets based on cell valueExcel VBA:根据单元格值插入N张表
【发布时间】:2017-06-05 15:12:27
【问题描述】:

我是 Excel VBA 的新手。我想根据单元格值插入单元格数。

我有 sheet1,我想使用 b4 作为要插入的工作表数量(这是一个模板)的参考。

例如,如果 b4 的值 = 4,我想复制模板表 4 次。

我如何在 vba 中做到这一点?

谢谢。 :)

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    没有魔法,在循环中一个一个地创建它们,将每个新的放在最后。编辑:您还想将它们重命名为 1、2、3、4、.. 所以:

    Sub CreateSheets()
        Dim i As Long
        With ThisWorkbook.Sheets
          For i = 1 To Sheet1.Range("B4").Value2
            .Item("Template").Copy After:=.Item(.Count)
            .Item(.Count).Name = i
          Next
        End With
    End Sub
    

    【讨论】:

    • 如果我想将每个副本重命名为 1,2,3... 怎么办?我怎么做?谢谢。 :)
    • @LiezlMaigue 好的,为此添加了一行。
    • 谢谢。如果我想使用 i 作为工作表的原点值怎么办。并将其用于另一系列代码。我的代码是什么?
    • @LiezlMaigue 我不完全理解,但我认为它应该是一个新问题的主题;因为 SO 是一个开放式问答网站,重要的是让每个问题尽可能具体,以便对浏览该网站的任何访客有用。 :)
    【解决方案2】:

    或者类似的...

    Sub CopyTemplate()
    Dim ws As Worksheet, wsTemplate As Worksheet
    Dim n As Integer, i As Long
    Application.ScreenUpdating = False
    Set ws = Sheets("Sheet1")
    Set wsTemplate = Sheets("Template")     'Where Template is the name of Template Sheet, change it as required.
    n = ws.Range("B4").Value
    If n > 0 Then
        For i = 1 To n
            wsTemplate.Copy after:=Sheets(Sheets.Count)
            ActiveSheet.Name = i
        Next i
    End If
    Application.ScreenUpdating = True
    End Sub
    

    【讨论】:

    • @LiezlMaigue 不客气。很高兴它按预期工作。 :)
    • 另外,我想使用 i 作为工作表的原点值。并将其用于另一系列代码。但我得到一个编译:不匹配错误。我错过了什么?
    【解决方案3】:

    这样的事情应该可以工作:

    Sub copySheets()
    
    Dim i As integer
    
    Dim n As integer 'the amount of sheets
    
    n = Cells(4, 2).Value 'b4
    
    For i = 2 To n
        If ActiveWorkbooks.Worksheets.Count < n Then 'Makes sure the sheets exists
            Dim ws As Worksheet
            Set ws = ThisWorkbook.Sheets.Add(After:= _
                 ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
        End If
        ws1.Copy ThisWorkbook.Sheets(Sheets.Count) 'copy data
    
    Next i
    
    End Sub
    

    【讨论】:

    • 伙计们,另外,我想使用 i 作为工作表的原点值。并将其用于另一系列代码。但我得到一个编译:不匹配错误。我错过了什么?
    猜你喜欢
    • 1970-01-01
    • 2015-09-24
    • 2017-01-28
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 1970-01-01
    相关资源
    最近更新 更多