【问题标题】:Creating worksheets from templates从模板创建工作表
【发布时间】:2018-07-08 12:18:11
【问题描述】:

我们组织中有大约 100 个部门需要预算。

我有一个包含 11 个工作表的主预算工作簿模板。

  • 1st 工作表是 Data 与各种数据
  • 2nd-11th 个工作表是每个部门在制定年度预算时将使用的 10 个主要类别

我需要为具有 10 个工作表的每个部门创建一个工作簿。

数据 工作表上,Column C 包含所有有预算的部门编号Column U 包含工作表的名称列表是 10 个主要费用类别(预算类别)。

我需要为每个部门创建每个工作表的副本,并使用帐号和现有工作表名称来命名工作表。

例如:

111100-Category-A
111100-Category-B
111100-Category-C
111100-Category-D
111100-Category-E
111100-Category-F
111100-Category-G
111100-Category-H
111100-Category-I
111100-Category-J

我试图用下面的代码遍历每个帐号和工作表名称。

现在,我得到了一个

编译错误:For Each 只能遍历集合对象或 一个数组。


这是我的代码

Option Explicit
Sub Add_Sheets()
Dim TabList As String, wsName As Range, Acct As Range, extraSheet As Worksheet
With Sheets("Data")
TabList = .Range("U2:U11")
For Each wsName In TabList
Set extraSheet = ThisWorkbook.Worksheets("wsName")
Application.ScreenUpdating = False
    Set rng = .Range(.[c2], .Cells(Rows.Count, "C").End(xlUp))

For Each Acct In rng
    extraSheet.Copy After:=Sheets(Sheets.Count)
    ActiveSheet.Name = Acct & "-" & "TabList"
Next
Next
End With
End Sub

【问题讨论】:

    标签: excel collections foreach compiler-errors vba


    【解决方案1】:

    您的代码中的错误不仅仅是提到的错误。但是,这是您发现的错误的解决方案:

    Dim TabList As String, wsName As Range, Acct As Range, extraSheet As Worksheet
    

    这是我发现的另一个问题:

    Set extraSheet = ThisWorkbook.Worksheets(wsname.value)
    

    【讨论】:

    • 感谢 TTG!我是 VBA 新手(非常明显),不确定 (wsname.value) 的语法,再次感谢您!
    • 祝你的宏好运。如果你走得更远,遇到更多无法解决的问题,请发布一个新问题。
    • 谢谢TTG!如果您有任何其他建议,我很乐意!
    猜你喜欢
    • 1970-01-01
    • 2014-04-28
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    相关资源
    最近更新 更多