【发布时间】: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 模板选项卡名称有任何想法吗?