我是Excel VBA的新手,我正尝试仅使用具有以下代码的行字段来创建数据透视表,但遇到错误1004,并且需要帮助进行调试。

我已经在注释后指出了代码上的错误// //'上面的宏创建了一个数据透视表缓存和地址以插入新的数据透视表//为了易于引用。

感谢对此的任何帮助。

Sub getpivotUI2()    
    '**strong text**    
    ' getpivotUI2 Macro    
    ' Create PivotTable from Task_Sheet to filter duplicate bill (UI2)    
    '

    Dim P2Sheet, TSheet As Worksheet    
    Dim P2Cache As PivotCache    
    Dim P2Table As PivotTable    
    Dim P2Range As Range    
    Dim L2Row, L2Col As Long   

    ' Declaring the variables above

    Set TSheet = Worksheets("Task_Sheet")    
    Set P2Sheet = Worksheets("pivot_UI2")   

    L2Row = TSheet.Cells(Rows.Count, 1).End(xlUp).Row    
    L2Col = TSheet.Cells(4, Columns.Count).End(xlToLeft).Column

    Set P2Range = TSheet.Cells(4, 1).Resize(L2Row, L2Col)

    'Macros above determine where the cursor is referenced

    P2Sheet.Cells.Delete 'Removing all previous data the pivotTable worksheet
    Set P2Cache = ActiveWorkbook.PivotCaches.Create _    
      (SourceType:=xlDatabase, SourceData:=P2Range)

    Set P2Table = P2Cache.CreatePivotTable _    
      (TableDestination:=P2Sheet.Cells(3, 1), TableName:="PivotTableUI2")

    'Macros above create a pivot cache and address to insert the new pivot table     

    With ActiveSheet.PivotTables("PivotTableUI2").PivotFields("UI2") '**<-- ERROR OCCURANCE**   
        .Orientation = xlRowField
        .Position = 1
    End With           

    With ActiveSheet.PivotTables("PivotTableUI2").PivotTables("PivotTableUI2").PivotFields("Count_UI2")
        .Orientation = xlDataField
        .Function = xlCount
        .Name = "Count of UI2"
    End With

    With ActiveSheet.PivotTables("PivotTableUI2").PivotTables("PivotTableUI2").PivotFields("R Patient" & Chr(10) & "Count")
        .Orientation = xlDataField
        .Function = xlCount
        .Name = "Count of R Patient"
    End With

    With ActiveSheet.PivotTables("PivotTableUI2").PivotTables("PivotTableUI2").PivotFields("PR Patient" & Chr(10) & "Count")
        .Orientation = xlDataField
        .Function = xlCount
        .Name = "Count of PR Patient"
    End With

    'Macros above inserts a row field and data field in the pivot table
End Sub

#1楼 票数:0 已采纳

尝试以下代码,并在代码注释中进行解释

Option Explicit

Sub getpivotUI2()

    ' getpivotUI2 Macro
    ' Create PivotTable from Task_Sheet to filter duplicate bill (UI2)

    Dim P2Sheet As Worksheet, TSheet As Worksheet
    Dim P2Cache As PivotCache
    Dim P2Table As PivotTable
    Dim P2Range As Range
    Dim L2Row As Long, L2Col As Long

    ' Declaring the variables above

    Set TSheet = ThisWorkbook.Worksheets("Task_Sheet")
    Set P2Sheet = ThisWorkbook.Worksheets("pivot_UI2")

    With TSheet
        L2Row = .Cells(.Rows.Count, 1).End(xlUp).Row
        L2Col = .Cells(4, .Columns.Count).End(xlToLeft).Column

        Set P2Range = .Range(.Cells(4, 1), .Cells(L2Row, L2Col)) ' set the data source of the Pivot-Cache
    End With

    'Macros above determine where the cursor is referenced

    P2Sheet.Cells.Delete 'Removing all previous data the pivotTable worksheet

    ' set the Pivot-Cache object
    Set P2Cache = ActiveWorkbook.PivotCaches.Add(xlDatabase, P2Range.Address(0, 0, xlA1, xlExternal))

    ' set the Pivot-Table object
    Set P2Table = P2Sheet.PivotTables.Add(PivotCache:=P2Cache, TableDestination:=P2Sheet.Range("A3"), TableName:="PivotTableUI2")

    'Macros above create a pivot cache and address to insert the new pivot table

    ' ~~~ For Debug Only ~~~
    Dim PTFld As PivotField

    For Each PTFld In P2Table.PivotFields
        Debug.Print PTFld.Name
    Next PTFld

    With P2Table.PivotFields("UI2")
        .Orientation = xlRowField
        .Position = 1
    End With

    ' rest of your Pivot-Fields code …

End Sub

我在上面的“ Sub添加了一个部分,以确保您的数据透视表具有“ U12 ”字段。

运行此部分时:

' ~~~ For Debug Only ~~~
Dim PTFld As PivotField

For Each PTFld In P2Table.PivotFields
    Debug.Print PTFld.Name
Next PTFld

您应该在立即窗口中获得以下值:

在此处输入图片说明

  ask by Jon L translate from so

未解决问题?本站智能推荐:

1回复

运行时错误“ 1004”无法获取工作表类的数据透视表属性

我需要创建数据透视表,但是我试图添加行字段,但是却出现错误,提示为“运行时错误'1004'无法获取工作表类的数据透视表属性” 我无法将“行”字段添加到我犯错的枢轴上,请帮帮我
2回复

运行时错误 1004“无法获取数据透视表类的数据透视字段属性”

我正在尝试使用代码选择数据透视表中一个子标题下的所有行。 我收到运行时错误 1004: 无法获取 Pivot Table 类的 PivotFields 属性 从这个代码: 为什么?
4回复

刷新数据透视表的运行时错误 1004

我创建了宏,它将刷新工作表中的所有数据透视表。 相同的代码适用于一张纸,但不适用于另一张纸。 我尝试在调试模式下运行它,它在前几个表中运行良好,并且在中间的一个表上崩溃并出现错误: 运行时错误“1004”:数据透视表类的 RefreshTable 方法失败。 此工作表中有 20 个数据透视
1回复

创建数据透视表的运行时错误1004

我正在尝试从.csv文件创建数据透视表。 但是我遇到了运行时错误1004:在代码的ActiveWorkbook部分,引用无效。 有什么建议吗? 我的代码如下 我做了一个Sheets.Add以添加到新的工作表中。 我使用ws.Name作为名称,可以是任何名称。 只是一个附
1回复

运行时错误“1004”无法设置工作表类的可见属性

我在按下按钮以显示所需工作表或按下箭头图标以退出工作表时遇到上述问题。 我用于箭头图标的代码是: 所有的床单都受到保护。 它运行了 25 天,现在问题出现了。 我还通过取消保护所有工作表来检查它,但问题仍然存在。
1回复

运行时错误1004无法获取工作表的countif属性

下面是我的代码: 它所做的是匹配sh1和sh2单元格。 如果不在sh2 ,则将Cell.Value添加到sh2 。 该代码可以正常工作,直到单元格中的文本超过255个字符为止。 (直到很长的文字) 当文本很长时,它返回一个错误"Run-time error 1004: Una
2回复

运行时错误1004“无法打开数据透视表源文件”

我想基于同一工作簿中的数据集(包含在工作表中)创建数据透视表。 当我运行宏时,工作簿是打开的。 数据集来自在Access中运行查询,然后将其导出到excel。 我还尝试在运行宏之前保存工作簿。 我正在使用Excel 2016。 这是我的代码: 最后两行生成相同的错误消息
1回复

运行时错误1004无法运行工作表类的粘贴方法

您好,我制作的宏出现问题。 直到他开始给出此错误之前,它一直运行良好。 然后当我进入调试。 在以下字段中显示错误:我将在此处发布所有代码。