使用 vba 创建枢轴 table - 运行 时间错误
Creating pivot table using vba - run time error
我正在尝试使用 vba 创建一个枢轴 table。以下是我试过的代码:
Sub CreatePivot()
Dim objTable As PivotTable
Dim objField As PivotField
Dim ws As Worksheet
Set ws = Worksheets.Add
Sheets(ws.Name).Name = "Write-Off Pivot"
' Select the sheet and first cell of the table that contains the data.
ActiveWorkbook.Sheets("GEP Write-Offs Rawdata").Select
Range("A1").Select
Set objTable = ws.PivotTableWizard
' Specify row and column fields.
Set objField = objTable.PivotFields("MPG")
objField.Orientation = xlRowField
' Specify a data field with its summary
' function and format.
Set objField = objTable.PivotFields("'A_780610 - Inventory - Obsolescence")
objField.Orientation = xlDataField
objField.Function = xlSum
objField.NumberFormat = "$ #,##0"
End Sub
我收到这条错误信息。
"Run-time error '104'"
"method 'pivottables' of object '_worksheet' failed"
问题似乎出在这一行,但无法确定是什么原因造成的。
Set objTable = ws.PivotTableWizard
您需要使用 ActiveSheet.Pivottablewizard
而不是 ws.PivotTableWizard
,因为 ws
sheet.
上没有任何数据
顺便说一句,这是不必要的复杂:
Sheets(ws.Name).Name = "Write-Off Pivot"
您只需要:
ws.Name = "Write-Off Pivot"
PivotTableWizard 方法需要一些参数:
像这样:
Set objTable = ws.PivotTableWizard(xlDatabase, ActiveWorkbook.Worksheets("Table8").Range("A1:A5"), ws.Range("A1:A6"))
有很多参数,对于您的示例,我需要数据源类型、数据源和数据目标。
只要打开 es.PivotTableWizard 后面的“(”,您就会看到所有参数,或者您可以在这里获取它们:
https://msdn.microsoft.com/de-de/library/office/ff839228.aspx
您的下一行需要更改。
Set objTable = ws.PivotTableWizard
这应该指向数据源sheet。应该如此。
Set objTable = Sheets("GEP Write-Offs Rawdata").PivotTableWizard
它将创建枢轴 table 并写入新添加的 sheet,因为您的命令
Set ws = Worksheets.Add
Sheets(ws.Name).Name = "Write-Off Pivot"
没有链接到it.May请适当修改
这是对@Rory 建议的补充。
我正在尝试使用 vba 创建一个枢轴 table。以下是我试过的代码:
Sub CreatePivot()
Dim objTable As PivotTable
Dim objField As PivotField
Dim ws As Worksheet
Set ws = Worksheets.Add
Sheets(ws.Name).Name = "Write-Off Pivot"
' Select the sheet and first cell of the table that contains the data.
ActiveWorkbook.Sheets("GEP Write-Offs Rawdata").Select
Range("A1").Select
Set objTable = ws.PivotTableWizard
' Specify row and column fields.
Set objField = objTable.PivotFields("MPG")
objField.Orientation = xlRowField
' Specify a data field with its summary
' function and format.
Set objField = objTable.PivotFields("'A_780610 - Inventory - Obsolescence")
objField.Orientation = xlDataField
objField.Function = xlSum
objField.NumberFormat = "$ #,##0"
End Sub
我收到这条错误信息。 "Run-time error '104'" "method 'pivottables' of object '_worksheet' failed"
问题似乎出在这一行,但无法确定是什么原因造成的。
Set objTable = ws.PivotTableWizard
您需要使用 ActiveSheet.Pivottablewizard
而不是 ws.PivotTableWizard
,因为 ws
sheet.
顺便说一句,这是不必要的复杂:
Sheets(ws.Name).Name = "Write-Off Pivot"
您只需要:
ws.Name = "Write-Off Pivot"
PivotTableWizard 方法需要一些参数:
像这样:
Set objTable = ws.PivotTableWizard(xlDatabase, ActiveWorkbook.Worksheets("Table8").Range("A1:A5"), ws.Range("A1:A6"))
有很多参数,对于您的示例,我需要数据源类型、数据源和数据目标。
只要打开 es.PivotTableWizard 后面的“(”,您就会看到所有参数,或者您可以在这里获取它们:
https://msdn.microsoft.com/de-de/library/office/ff839228.aspx
您的下一行需要更改。
Set objTable = ws.PivotTableWizard
这应该指向数据源sheet。应该如此。
Set objTable = Sheets("GEP Write-Offs Rawdata").PivotTableWizard
它将创建枢轴 table 并写入新添加的 sheet,因为您的命令
Set ws = Worksheets.Add
Sheets(ws.Name).Name = "Write-Off Pivot"
没有链接到it.May请适当修改
这是对@Rory 建议的补充。