从模板创建工作表

时间:2018-01-29 18:07:03

标签: excel excel-vba collections foreach compiler-errors vba

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

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

  • 1 st 工作表是数据,包含各种数据
  • 2 nd -11 th 工作表是10个主要类别,每个部门将用于创建年度预算

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

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

Departments & Worksheet Names

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

例如:

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

1 个答案:

答案 0 :(得分:0)

您的代码中的错误多于上面提到的错误。以下是您找到的错误的解决方案:

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

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

Set extraSheet = ThisWorkbook.Worksheets(wsname.value)