我的最终目标是有一个按钮,按下该按钮时会创建一个带有表格的新工作表..该新表格应添加到数据透视表向导列表中。
被调用的错误是
错误消息 1004 Worksheet 的 PivotTableWizard 方法失败
Dim NewShop As Variant
NewShop = InputBox("What Shop are you creating a new estimate sheet for? (example: Shop 18)")
NewShop = Replace(NewShop, " ", "_")
Sheets("CE_Template").Select
Sheets("CE_Template").Copy After:=Sheets("Project Estimator")
ActiveSheet.Name = NewShop
If ActiveSheet.Name = "CE_Template" Then
Exit Sub
Else
Range("C4").Value = NewShop
ActiveSheet.ListObjects(1).Name = NewShop
End If
Dim MyArray() As String
Dim ArraySize As Integer
Dim ws As Worksheet
Dim tbl As ListObject
ArraySize = 0
ReDim MyArray(0 To 0)
For Each ws In ActiveWorkbook.Worksheets
For Each tbl In ws.ListObjects
ReDim Preserve MyArray(ArraySize) As String
MyArray(UBound(MyArray)) = tbl.Name & "[#All]"
ArraySize = ArraySize + 1
Next tbl
Next ws
Sheets("Project Estimator").Select
Range("A17").Select
ActiveSheet.PivotTableWizard SourceType:=xlConsolidation, SourceData:=MyArray
编辑:我之前的问题是如何将项目添加到数组中,这个问题现在已经解决了。谢谢。请查看新问题。
答案1
这将解决您的眼前问题,您需要在循环前添加此行:
ReDim MyArray(0 To 0)
当您Dim MyArray()
创建一个没有索引的数组时,如果不先使用,就无法为其分配任何值ReDim
。
您还需要将ReDim
循环中的 更改为ReDim Preserve
。如果只是使用ReDim
它,每次都会破坏数组内容。