循环访问数据验证列表并将表格值复制到新书

时间:2016-06-21 10:39:05

标签: excel vba excel-vba

我目前有一张工作表使用项目名称的数据验证列表来填充包含所选项目信息的模板。鉴于有大量的项目我认为最好我用VBA自动化这个过程所以我可以有一个包含所有项目的新工作簿

我想读取单元格BA3中的数据验证,从列表中的第一个开始,计算工作表,仅复制值,将新工作表重命名为单元格A2中保存的项目名称,然后返回到模板文件循环遍历下一个x项目名称。我还希望它将所有不同的项目保存到新工作簿中作为工作表,而不是所有Book1,2,3等。

目前我有:

Sub RunProjects()
Dim dvCell As Range
Dim inputRange As Range
Dim c As Range
Dim i As Long
Dim wb As Workbook
Dim NewShtName As String

 'Which cell has data validation
Set dvCell = Worksheets("Project Report Template").Range("BA3")
 'Determine where validation comes from
Set inputRange = Evaluate(dvCell.Validation.Formula1)

 'Begin loop
Application.ScreenUpdating = False
For Each c In inputRange
    dvCell = c.Value
    NewShtName = Cells(2, "A").Value
    Sheets("Project Report Template").Copy
    Set wb = ActiveWorkbook
    wb.Sheets("Project Report Template").Name = NewShtName

Next c
Application.ScreenUpdating = True

End Sub

这在一定程度上起作用。它使用适当的新工作表名称创建一个新工作簿,但复制公式而不是值。然后在第一个项目之后它被卡住并抛出“运行时错误9.下标超出范围”。

我认为它可能与activeworkbook有关,但无法解决问题。

任何想法都赞赏!

0 个答案:

没有答案