For i = 1 To repNumber
TryAgain:
On Error GoTo ErrH:
repName = InputBox("Enter rep name you want to exclude.", "Name of Rep")
.PivotItems(repName).Visible = False
Next i
ErrH:
MsgBox "Try Again"
GoTo TryAgain:
如果我输入数据透视表中不存在的Rep名称,则会显示错误。因此,我尝试使用错误处理程序让用户再次键入Rep名称。 但是在我第二次输入错误之后,代码却没有进入错误处理程序,代码终止了。
我不确定是否会出现“错误转发”问题。是错误的。
答案 0 :(得分:1)
您可以通过在代码本身内进行测试并使用Error Handing
块和GoTo
循环来完全避免If
和Do
语句(这绝对是最佳做法) 。al。)。
请参阅此代码,该代码应完成同样的事情:
Dim pf As PivotField, pi As PivotItem
Set pf = PivotTables(1).PivotField("myField") 'adjust to your needs
For i = 1 To repNumber
Do
Dim bFound As Boolean
bFound = False
repName = InputBox("Enter rep name you want to exclude.", "Name of Rep")
For Each pi In pf.PivotItems
If pi.Value = repName Then
pi.Visible = False
bFound = True
Exit For
End If
Next pi
Loop Until bFound = True
Next i
答案 1 :(得分:0)
尝试使用Resume TryAgain
代替GoTo TryAgain
。
(在这些语句中你不需要:
,这是巧合的,因为它也用于分隔一行中的多个语句,所以这里没有意义。)