VBA - GetPivotData - 无法捕获运行时错误1004

时间:2015-07-10 10:36:41

标签: excel vba excel-vba error-handling pivot-table

我正在开发一个选择数据透视表的一部分并发送该提取的过程。

一切都很好,除了我一直有运行时错误1004 我无法捕捉(避免它并保持循环)等等我的循环不能顺利运作......

以下是有问题的部分:

    On Error GoTo 0
    On Error GoTo NextSale
    If IsError(pt.GetPivotData("Amount", Pf.Name, Pi.Name, "Sales_Opp", PiO.Name)) Then GoTo NextSale
    Set Rg = pt.GetPivotData("Amount", Pf.Name, Pi.Name, "Sales_Opp", PiO.Name)
    On Error GoTo 0

    Set RgT = Union(RgT, Rg)
NextSale:

因为pt.GetPivotData("Amount", Pf.Name, Pi.Name, "Sales_Opp", PiO.Name)会抛出运行时错误1004 ,所以当数据中没有组合时我只想避免在循环中被阻止。< / p>

我搜索过但却没有设法解决这个问题...... IsError()On Error GoTo无法解决问题。我甚至检查了选项(工具 - >选项 - &gt;一般 - >错误陷阱),我已经在Break on Unhandled Errors ...

以下是完整代码:

Sub testPt()
Dim Pt As PivotTable, _
    Pf As PivotField, _
    Pi As PivotItem, _
    PiO As PivotItem, _
    Ws As Worksheet, _
    TpStr As String, _
    RgT As Range, _
    Rg As Range

Set Ws = ThisWorkbook.Sheets("PT_All")

For Each Pt In Ws.PivotTables
    For Each Pf In Pt.PivotFields
        If Pf.Name <> "Sales" Then
        Else
            For Each Pi In Pf.PivotItems
                Set RgT = Pi.LabelRange
                For Each PiO In Pt.PivotFields("Sales_Opp").PivotItems

                    On Error GoTo 0
                    On Error GoTo NextSale
                    If IsError(Pt.GetPivotData("Amount", Pf.Name, Pi.Name, "Sales_Opp", PiO.Name)) Then GoTo NextSale
                    Set Rg = Pt.GetPivotData("Amount", Pf.Name, Pi.Name, "Sales_Opp", PiO.Name)
                    On Error GoTo 0

                    Set RgT = Union(RgT, Rg)
NextSale:
                Next PiO
                RgT.Select
                MsgBox RgT.Address
            Next Pi
        End If
    Next Pf
Next Pt

End Sub

2 个答案:

答案 0 :(得分:2)

我有一种感觉,它是第二次通过例行程序而不是第一次失败。
它已成功捕获第一个错误,但由于没有Resume xxxxxx语句,它仍然在尝试执行错误处理时遇到下一个错误。不允许嵌套错误处理,因此错误输出。

删除On Error Goto 0行,并将剩余的On Error更改为

On Error GoTo Err_Handlr

然后,在End Sub之前,添加以下内容:

Unexpected_Err:
Exit Sub

Err_Handlr:
If err.number=1004
    Resume NextSale
Else
    Msgbox "Can't handle " & err.description
    Resume Unexpected_Err
end if

请注意,我正在寻找预期的错误编号 - 这意味着如果其他部分出现故障,我至少可以了解它,而不是通过其他任何可能发生的副作用而失去控制

答案 1 :(得分:1)

问题可能与范围错误处理(或缺乏处理)有关。

以下代码未经测试,但您应该能够找出错误所在的位置,并根据您的要求进行调整......

<pan-md-autocomplete pan-lista="tiposcompl" pan-label="'Complemento'" pan-maxlength="'8'" pan-flex="'25'" pan-model="tpcompl.value"></pan-md-autocomplete>
相关问题