我正在开发一个选择数据透视表的一部分并发送该提取的过程。
一切都很好,除了我一直有运行时错误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
答案 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>