【问题标题】:Macro to Copy One Sheet to Multiple Sheets with Dynamic Range使用动态范围将一张纸复制到多张纸的宏
【发布时间】:2015-12-17 22:38:53
【问题描述】:

VBA 奇才们,

使用以下代码,我能够生成多个标签名称等于动态范围的工作表:

Sub SheetMacro()
    Dim MyCell As Range, MyRange As Range

    Set MyRange = Sheets("Control_Sheet").Range("F7")
    Set MyRange = Range(MyRange, MyRange.End(xlDown))

    For Each MyCell In MyRange
        Sheets.Add After:=Sheets(Sheets.Count) 'creates a new worksheet
        Sheets(Sheets.Count).Name = MyCell.Value ' renames the new worksheet
    Next MyCell
End Sub

在尝试将带有公式的源模板(EAC 摘要)复制到所有最近创建的工作表中时,我遇到了一些障碍。添加此代码会复制 EAC 摘要,但不会命名动态范围内的选项卡:

Sub SheetMacro()
    Dim MyCell As Range, MyRange As Range
    Dim ws1 As Worksheet

    Set MyRange = Sheets("Control_Sheet").Range("F7")
    Set MyRange = Range(MyRange, MyRange.End(xlDown))

    For Each MyCell In MyRange
        Sheets.Add After:=Sheets(Sheets.Count) 'creates a new worksheet
        Sheets(Sheets.Count).Name = MyCell.Value ' renames the new worksheet

        Set ws1 = ThisWorkbook.Worksheets("EAC Summary")
        ws1.Copy ThisWorkbook.Sheets(Sheets.Count)

    Next MyCell  

End Sub

是否有一种最佳的方法来组合代码以复制源模板,并根据动态范围内的输入命名选项卡?

提前致谢。

【问题讨论】:

  • 你只是想复制EAC Summary然后重命名它吗?如果是这样,您应该在Copy 步骤之后执行重命名步骤。如果这不是目标,请澄清您的问题。
  • 谢谢。此代码将 EAC 摘要选项卡名称替换为范围中的第一个单元格,但代码错误,因为 EAC 选项卡已重命名: Sub SheetMacro2() Dim MyCell As Range, MyRange As Range Dim ws1 As Worksheet Set MyRange = Sheets(" Control_Sheet").Range("F7") Set MyRange = Range(MyRange, MyRange.End(xlDown)) 对于 MyRange Set 中的每个 MyCell ws1 = ThisWorkbook.Worksheets("EAC Summary") ws1.Copy ThisWorkbook.Sheets(Sheets. Count) Sheets(Sheets.Count).Name = MyCell.Value ' 重命名新工作表 Next MyCell End Sub
  • 您对如何防止代码覆盖原始 EAC 模板选项卡名称有任何想法吗?

标签: excel vba


【解决方案1】:

我能够使用替代命令进行复制,这解决了我最初的问题。以下是代码,供任何可能遇到此问题的人使用:

Sub SheetMacro3()
Dim MyCell As Range, MyRange As Range

Set MyRange = Sheets("Control_Sheet").Range("F7")
Set MyRange = Range(MyRange, MyRange.End(xlDown))
Sheets("EAC Summary").Visible = True   'displays master template
For Each MyCell In MyRange

    Sheets("EAC Summary").Copy After:=Worksheets(Worksheets.Count)
    Sheets(Sheets.Count).Name = MyCell.Value ' renames the new worksheet
Next MyCell
Sheets("EAC Summary").Visible = False 'hides master template
End Sub

【讨论】:

    猜你喜欢
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 2017-12-17
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 1970-01-01
    相关资源
    最近更新 更多