簡體   English   中英

使用VBA創建時數據透視表錯誤

[英]Pivot Table error whilecreating using VBA

好先生!

我正在嘗試使用vba創建數據透視表,而我對使用vba進行數據透視非常陌生,我嘗試在Google中進行盡可能多的研究以糾正此問題,但沒有找到很多可以幫助我解決問題的信息,這將非常有用如果有人可以幫助我,請提供幫助。

范圍-始終從A10開始,列將固定到H,但行數未固定,因此我嘗試定義范圍並在代碼中使用它,但是它在錯誤消息下方拋出了我,請檢查並糾正我

面臨的問題-無法將Rng定義為范圍,並且無法在數據透視表中使用此范圍。

范圍

運行時錯誤“ 91”:未設置對象變量或黑色方差

數據透視緩存

運行時錯誤“ 438”:對象不支持此屬性或方法

數據

ACT AN貨幣CB LC類型CB FC類型SI 1001 c USD 2,031 Dr 2,031 Dr 0005
1002 BHD 1,194博士1,194博士0105
1003 P EUR 326博士326博士0110
1004 AR GBP 60,467 Dr 60,467 Dr 0125
1005 AP DHS(73,080)鉻(73,080)鉻0190

Sub Pivot()

Dim ws As Worksheet
Dim pc As PivotCache
Dim pt As PivotTable
'Dim Rng As Range

'Defining Range

Rng = Range("A10").Select
Rng = Range(Selection, Selection.End(xlToRight)).Select
Rng = Range(Selection, Selection.End(xlDown)).Select



'Adding new worksheet
Set ws = Worksheets.Add
'Creating Pivot cache
Set pc = ActiveWorkbook.PivotCaches.Create(xlDatabase, "Working!Rng").Select


'Creating Pivot table
Set pt = pc.CreatePivotTable(ws.Range("B3"))
'Setting Fields
With pt
'set row field
With .PivotFields("SI")
.Orientation = xlRowField
.Position = 1
End With
'set column field
With .PivotFields("Currency")
.Orientation = xlColumnField
.Position = 1
End With

End With

End Sub

謝謝你的幫助!

關於Suresh7860

嘗試將以下代碼用作您所需的示例。 如果有任何不清楚的地方,我會很樂意回答。 但是您不會了解我是否為您編寫代碼。

Sub BuildPT()

    Dim pvtTbl As PivotTable
    Dim pvtCha As PivotCache
    Dim pvtDestWS As Worksheet
    Dim pvtSrcWS As Worksheet
    Dim pvtWB As Workbook
    Dim pvtSrcRng As Range
    Dim pvtStrt As Range
    Dim keyRng As Range
    Dim LastRow As Integer
    Dim LastCol As Integer

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual      

    On Error Resume Next
        pvtWB.Worksheets("Total").Delete 'Delete PT destination sheet
    On Error GoTo 0

    Set pvtSrcWS = pvtWB.Worksheets("Data") 'Set source sheet name

    'Here I find the last row and column containing data

    LastRow = pvtSrcWS.Cells.Find(What:="*", After:=pvtSrcWS.Range("A1"), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False, MatchByte:=False).row
    LastCol = pvtSrcWS.Cells.Find(What:="*", After:=pvtSrcWS.Range("A1"), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False, MatchByte:=False).Column


    Set pvtSrcRng = Range(pvtSrcWS.Cells(1, 3), pvtSrcWS.Cells(LastRow, LastCol)) 'Set the range that contains the source data

    Set pvtDestWS = pvtWB.Sheets.Add 'Add the destination sheet
    pvtDestWS.Name = "Total" 'Rename destination sheet

    Set pvtStrt = pvtDestWS.Cells(1, 1) 'Set the PT start location

    'Here I create the pivot cache, the container that holds pivot table data
    'Then I create the pivot table itself
    Set pvtCha = pvtWB.PivotCaches.Create(xlDatabase, pvtSrcRng)
    Set pvtTbl = pvtCha.CreatePivotTable(TableDestination:=pvtStrt, TableName:="Test PT")

    'Now I add the fields I need
    With pvtTbl
        With .PivotFields("Amount")
            .Orientation = xlDataField
            .Function = xlSum
            .NumberFormat = "#,##0"
        End With
        With .PivotFields("Account")
            .Orientation = xlPageField
            .CurrentPage = "513035"
        End With
        .PivotFields("Key").Orientation = xlRowField
        .RepeatAllLabels xlRepeatLabels
    End With

    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM