拉入PowerPivot创建的度量时出现运行时错误1004

时间:2018-04-02 22:21:39

标签: excel vba

我是新成员,我找不到任何特定的解决方案来处理我遇到的问题。我得到运行时错误1004:

  

应用程序定义或对象定义错误

尝试添加cubefield值时。错误:.Orientation = xlDataField 它有时工作,但我主要得到这个错误,并试图找到它的永久修复。我使用的是Excel 2016版本。

这是我正在使用的VBA代码:

Sub UnhideALL()  

Sheets("Availability_Details").Select

 With TROCUserForm
  .Top = Int(((Application.Height / 2) + Application.Top) - (.Height / 2))
    .Left = Int(((Application.Width / 2) + Application.Left) - (.Width / 2))
    .Show False
    End With
    Application.Wait (Now + TimeValue("0:00:01"))

    Range("M17").Select

     With ActiveSheet.PivotTables("QuotaAvail").CubeFields("[Measures].[Sum of Booked]")
        .Orientation = xlDataField
        .Position = 2
    End With

      With ActiveSheet.PivotTables("QuotaAvail").CubeFields("[Measures].[Sum of Build]")
        .Orientation = xlDataField
        .Position = 3
    End With

      With ActiveSheet.PivotTables("QuotaAvail").CubeFields("[Measures].[Available_Y_N]")
        .Orientation = xlDataField
        .Position = 4
    End With

         With ActiveSheet.PivotTables("QuotaAvail").CubeFields("[Measures].[Tech_Net_to_85]")
        .Orientation = xlDataField
        .Position = 5
    End With

    With ActiveSheet.PivotTables("QuotaAvail").CubeFields("[Measures].[Tech_Net_to_75]")
        .Orientation = xlDataField
        .Position = 6
    End With

    With ActiveSheet.PivotTables("QuotaAvail").CubeFields("[Measures].[Tech_Net_to_65]")
        .Orientation = xlDataField
        .Position = 7
    End With

    Range("G9").Select

    ActiveWorkbook.ShowPivotTableFieldList = False

    ActiveSheet.PivotTables("QuotaAvail").PivotFields("[Measures].[Sum of Booked]") _
        .Caption = "Bkd"

    ActiveSheet.PivotTables("QuotaAvail").PivotFields("[Measures].[Sum of Build]"). _
        Caption = "Blt"

    ActiveSheet.PivotTables("QuotaAvail").PivotFields("[Measures].[Available_Y_N]") _
        .Caption = "Avail"
    ActiveWorkbook.ShowPivotTableFieldList = False
    Range("G9").Select

    Call TechNet85Cond
    Call TechNet75Cond3
    Call TechNet65Cond3
    Call Wholenumber

    Unload TROCUserForm

End Sub

2 个答案:

答案 0 :(得分:0)

我猜测如果使用.AddDataField方法将度量添加到“值”区域,问题将得到解决。启动宏录制器并手动添加字段,然后检查生成的代码以获取语法。对于我的示例数据,它看起来像这样:

ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _
        "PivotTable1").CubeFields("[Measures].[ Value]"), " Value"

我想你必须首先检查这些度量是否已经存在于数据透视表中,或者可能在那里抛出一个ON ERROR RESUME NEXT来处理这种情况。

ActiveSheet.PivotTables(“PivotTable1”)。AddDataField ActiveSheet.PivotTables(_         “PivotTable1”)。CubeFields(“[Measures]。[Value]”),“Value”

答案 1 :(得分:0)

谢谢。看起来像原始字段,预订和构建导致问题。我创建了一个度量预定的总和(名为:Sum_of_Booked)并构建而不是使用该度量而不是原始字段。