简体   繁体   English

数据透视表的VBA错误:对象_Global的错误1004范围失败

[英]VBA Error with PivotTable: error 1004 range of object _Global failed

I am creating a PivotTable in VBA whose range is first calculated and then a table created from that. 我正在VBA中创建数据透视表,该数据透视表的范围首先被计算,然后从中创建一个表。 However, it's showing an error so can someone please correct it? 但是,它显示了错误,因此有人可以更正吗? It's showing: 它显示:

error 1004 range of object _Global failed. 错误_对象_Global的1004范围失败。

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

try this (changed NewRange to a String) : 试试这个(将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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM