我有以下代码:
Dim StartCell3 As Range
Dim DataRange3 As Range
Set StartCell3 = Range("A1")
Set DataRange3 = StartCell3.CurrentRegion
DataRange3.Select
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=DataRange3, Version:=xlPivotTableVersion15).CreatePivotTable _
TableDestination:="Stocks!R1C6", TableName:="PivotTable8", DefaultVersion _
:=xlPivotTableVersion15
Sheets("Stocks").Select
Cells(1, 6).Select
With ActiveSheet.PivotTables("PivotTable8").PivotFields("Material")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("PivotTable8").AddDataField ActiveSheet.PivotTables( _
"PivotTable8").PivotFields("Unrestricted"), "Sum of Unrestricted", xlSum
Range("F6").Select
With ActiveSheet.PivotTables("PivotTable8")
.ColumnGrand = False
.RowGrand = False
End With
说到Sheets(“Stocks”)。选择,它会给出下标超出范围的错误。它在处理模块时不会出现任何错误,但我创建了一个启用宏的工作簿并插入了一个分配了该宏的按钮。
主要问题是,从我创建的宏中,正常工作代码在此工作簿代码部分。因此,它只有sheet1,没有sheet2或其他一些工作表名称。为什么会出错?为什么工作簿无法识别其他工作簿?
答案 0 :(得分:0)
是否有表格" Stocks"在工作簿中,您正在运行宏?
如果没有,你需要告诉excel它在哪个工作簿。
例如:
Workbooks("name of workbook where the sheet is").Activate
Sheets("Stocks").Select
虽然不建议您使用activate或select,因为这会导致意外的运行时错误。请参阅以下内容:How to avoid using Select in Excel VBA macros