2015-05-04 150 views
0

我在VBA中創建一個數據透視表,它首先計算範圍,然後根據該數據透視表創建一個表。但是,它顯示錯誤,所以有人可以糾正它嗎?它顯示:VBA數據透視表錯誤:對象_Global的錯誤1004範圍失敗

對象錯誤1004範圍_Global失敗。

Sub Pivottable() 

    Dim NewRange As Range 
    Dim n As Long 

    Sheets("DUT1_Test51_excel").Select 

    n = Worksheets("DUT1_Test51_excel").Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count 

    Set NewRange = Range("A3" & ":" & "Q" & n) 

    ActiveWorkbook.PivotCaches.Create(_ 
    SourceType:=xlDatabase, _ 
    SourceData:=Range(NewRange), _ 
    Version:=xlPivotTableVersion14). _ 
     CreatePivotTable _ 
     TableDestination:="DUT1_Test51_excel!R3C22", _ 
     TableName:="PivotTable1", _ 
     DefaultVersion:=xlPivotTableVersion14 

    Sheets("DUT1_Test51_excel").Select 
    Cells(3, 22).Select 

    ActiveWorkbook.ShowPivotTableFieldList = True 
    ActiveSheet.PivotTables("PivotTable1").AddDataField _ 
     ActiveSheet.PivotTables("PivotTable1").PivotFields("20431"), "Average of 20431", xlAverage 
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("time") 
     .Orientation = xlRowField 
     .Position = 1 
    End With 

End Sub 
+1

當它給你的錯誤? – R3uK

+0

在行「PivotTable1」,DefaultVersion:= xlPivotTableVersion14 – harshit

回答

0

試試這個(改變NewRange爲String):

Sub Pivottable() 

    Dim NewRange As String 
    Dim n As Long 

    Sheets("DUT1_Test51_excel").Select 

    n = Worksheets("DUT1_Test51_excel").Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count 

    NewRange = "A3:Q" & n 


    ActiveWorkbook.PivotCaches.Create(_ 
    SourceType:=xlDatabase, _ 
    SourceData:=Range(NewRange), _ 
    Version:=xlPivotTableVersion14). _ 
     CreatePivotTable _ 
     TableDestination:="DUT1_Test51_excel!R3C22", _ 
     TableName:="PivotTable1", _ 
     DefaultVersion:=xlPivotTableVersion14 

    Sheets("DUT1_Test51_excel").Select 
    Cells(3, 22).Select 

    ActiveWorkbook.ShowPivotTableFieldList = True 
    ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables("PivotTable1").PivotFields("20431"), "Average of 20431", xlAverage 
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("time") 
     .Orientation = xlRowField 
     .Position = 1 
    End With 

End Sub 
+0

感謝您的回覆。上面的問題已經解決了,但是現在它的顯示錯誤「無法獲得pivotTable類的pivot字段屬性」在ActiveSheet.PivotTables(「PivotTable1」).PivotFields(「20431」),「20431的平均值」xlAverage。 – harshit

+0

好吧,你的數據庫中有一列(你從哪個表生成數據透視表)命名爲「20431」?但是當你調用'PivotFields(「time」)'後,你可以將它改爲「時間」或任何其他列的標題名稱。 – R3uK

+0

是的我有一個名爲20431的列,也有一個名爲time(time是包含所有帶時間值的日期)的列 – harshit

相關問題