数据透视表格式返回错误

时间:2012-12-05 13:15:28

标签: excel-vba excel-2010 pivot-table vba excel

我正在研究一个宏,我将数据透视表放在一起。

我的问题: 我无法让计算部分工作。每次我在PivotField(18)应该计算.Function = xlCount的阶段运行代码时都会出错。我得到的错误是“1004范围类选择方法失败”。

我在网上和MS帮助部分找到的所有示例都是按照我设置代码的方式构建的。我错过了什么?

非常感谢任何帮助...

我一直在努力工作。以下页面(Link)非常有用,但没有帮助我解决这个特殊问题。

' Start of PivotSpecific Formatting
Set pt = ActiveSheet.PivotTables("PT" & wsNewWorksheetName)
With pt
    ' Prevent AutoFormatting of Columns
    .HasAutoFormat = False
    ' Hide Field Headers
    .DisplayFieldCaptions = False
    .TableStyle2 = "PivotStyleMedium2"
    ' Apply calculation to numbers and change Caption
    With .PivotFields(18)
        .Caption = "Demand"
        .Function = xlCount
        .NumberFormat = "#,##0"
    End With
    With .PivotFields(15)
        .Caption = "Lowest OP"
        .Function = xlMin
        .NumberFormat = "#,##0.00"
    End With
End With

更新1:数据透视表的屏幕截图 Pivot Table Screenshot

更新2:来自bonCodigo的测试代码 这是调整到我的工作簿的代码。有了这个,我在行上得到一个运行时错误91: 设置pvField = pvTable.PivotFields(18)

Dim wkSheet As Worksheet
Dim pvTable As PivotTable
Dim pvField As PivotField

Set wkSheet = ThisWorkbook.Worksheets(wsNewWorksheetName)
Set pvTble = wkSheet.PivotTables("PT" & wsNewWorksheetName)
Set pvField = pvTable.PivotFields(18)

With pvField
     .Caption = "Demand"
     .Function = xlCount
     .orientation = xlDataField
     .NumberFormat = "#,##0"
End With

Set pvField = Nothing
Set pvTable = Nothing
Set wkSheet = Nothing

1 个答案:

答案 0 :(得分:1)

请试一试,并对结果发表评论。所以我们可以从那里看到。

Option Explicit

'-- whatever other code you may have... 

Dim wkSheet as Worksheet
Dim pvTable as PivotTable
Dim pvField as PivotField

Set wkSheet = ThisWorkbook.Worksheets("Sheet1") '-- user proper sheet name explicitly
Set pvTble = wkSheet.PivotTables("PivotTable1") 
   ' or wkSheet.PivotTables(1) '-- use pivot table name or index
Set pvField = pvTable.PivotFields("SomeField") '-- use pivot field name or index

' -- do whatever you want to do with the pivot table

' -- do what you need to do with the pivot field
With pvField
     .Caption = "Demand"
     .Orientation = xlDataField '--<< THIS could well be the culprit
     .Function = xlCount
     .NumberFormat = "#,##0"
End With

Set pvField = Nothing
Set PvTable = Nothing
Set wkSheet = Nothing

由于您有多个要格式化的字段,我建议您使用DataFields Index连续使用循环

e.g。 pvTable.DataFields(1).Function = xlCount

否则你必须单独定义它们。最好将变量指定为您要交互的对象的引用。 :)