当谈到VBA时我很新,所以我确定这非常混乱,但我的最终目标是让全局宏从一系列数据中创建一个数据透视表,然后将其添加到工作表中以前做过的。问题在于,无论我正在使用的活动工作表中的数据量如何,我都试图使代码工作到选择所有数据的位置。
随着我不断获得的代码部分
运行时错误'5':无效的过程调用或参数
我可以假设这个错误是由于第6行的部分而引发的。我已经在下面放置了有问题的行,并在底部放置了完整的代码。
ActiveSheet.Range("A1").Cells(xlLastCell), _
简而言之,数据透视表需要选择当前活动工作表中的任何数据以用作源。
非常感谢帮助!
Worksheets.Add(After:=Worksheets(2)).Name = "Pivot Table"
Sheets("Loan Detail").Activate
Range("A1").Select
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
ActiveSheet.Range("A1").Cells(xlLastCell), _
Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:="Pivot Table!R3C3", TableName:="PivotTable1", _
DefaultVersion:=xlPivotTableVersion14
答案 0 :(得分:0)
根据sktneer的评论,我使用CurrentRegion进行了测试,它对我有用:
Sub foo()
Dim ws As Worksheet: Set ws = Sheets("Sheet1")
'declare and set your worksheet, amend as required
Worksheets.Add(After:=Worksheets(2)).Name = "Pivot Table"
ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
ws.Range("A1").CurrentRegion, Version:=xlPivotTableVersion14).CreatePivotTable TableDestination:=Sheets("Pivot Table").Range("A3"), TableName:="PivotTable", DefaultVersion:=xlPivotTableVersion14
End Sub
答案 1 :(得分:0)
以下是创建数据透视表的一般代码。您可以使用此代码作为参考。
此外,您可以从以下链接下载工作簿...
https://drive.google.com/open?id=14bAhfPhbl3PNUkVc5kX4gUdtKLCDpiF0
创建数据透视表的代码:
Sub CreatePivotTable()
Dim wsData As Worksheet, wsPivot As Worksheet
Dim pc As PivotCache
Dim pt As PivotTable
Dim pf As PivotField
Dim rngSource As Range
Application.ScreenUpdating = False
Set wsData = Sheets("Data")
On Error Resume Next
Set wsPivot = Sheets("Pivot")
wsPivot.Cells.Clear
On Error GoTo 0
If wsPivot Is Nothing Then
Set wsPivot = Sheets.Add(before:=wsData)
wsPivot.Name = "Pivot"
End If
Set rngSource = wsData.Range("A1").CurrentRegion
'Creating Pivot Cache
Set pc = ThisWorkbook.PivotCaches.Create(xlDatabase, rngSource)
'Creating Pivot Table
Set pt = pc.CreatePivotTable(wsPivot.Range("A3"), "SalesPivot")
'Adding Row and Column Fields
pt.AddFields RowFields:="Name", ColumnFields:="Day"
'Adding Data Field
pt.AddDataField field:=pt.PivotFields("Sales"), Function:=XlConsolidationFunction.xlSum
'Adding Data Field Formatting
pt.DataFields(1).NumberFormat = "#,##0"
'Disable the Grand Total for Rows
pt.RowGrand = False
'Disable the Grand Total for Columns
pt.ColumnGrand = False
'Setting layout to Tabular View
pt.RowAxisLayout xlTabularRow
'Sorting the Row Field
Set pf = pt.PivotFields("Name")
'Sorting Descending
pf.AutoSort xlDescending, pf
'Sorting Ascending
pf.AutoSort xlAscending, pf
Application.ScreenUpdating = True
End Sub