2015-05-04 148 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

相关问题