如何从存储的工作表变量创建工作表

时间:2016-05-06 18:56:41

标签: excel-vba worksheet vba excel

这里有新的VBA用户......

我不知道如何根据存储在内存中的变量创建工作表。我要做的是创建现有"模板的多个副本"打开工作簿中的工作表,在内存中操作它们(例如更改范围值,添加公式等),然后在打开的工作簿中将它们创建为实际工作表。

我可以在内存中创建副本并将它们存储在一个数组中,但我无法在工作簿中创建实际的工作表。请帮助:)

Dim wb As Workbook
Dim ws As Worksheet
Dim wsTemplate As Worksheet
Dim wsCopies(1 To 5) As Worksheet
Dim x As Long

Set wb = ThisWorkbook
Set ws = wb.Sheets("Worksheet Test")
Set wsCopy = ws


For x = 1 To 5
    Set wsCopies(x) = wsTemplate
'used this line to make sure this actually copied into memory
    Debug.Print wsCopies(x).Range("A1").FormulaR1C1
Next x

提前致谢!

1 个答案:

答案 0 :(得分:0)

内存中确实没有"工作表"只存在于内存中。您可以在工作簿中创建一个新的工作表。如果没有一点点诡计,复制工作表也不是一个好方法。类似的东西:

For x = 1 To 5
    wsTemplate.copy after:=wsTemplate
    Set wsCopies(x) = wb.Sheets(wsTemplate.index + 1)
'used this line to make sure this actually copied into memory
    Debug.Print wsCopies(x).Range("A1").FormulaR1C1
Next x

哪个并不可怕,但它并不完全是你的想法。如果您未进入application.screenupdating = false所有这一切,则可以将wsCopies(x).visible设置为xlSheetHidden并进行进一步操作,直到您再次切换为可见为止。