error handling循环和用户input

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: 

它显示一个错误,如果我input数据透视表中不存在的副本名称。 所以我试图使用一个error handling程序让用户再次inputRep名称。 但是在第二次之后,我input了错误的代码,而不是去error handling程序,代码自行终止。

我不确定'On Error GoTo'是否在错误的行中。

尝试Resume TryAgain而不是GoTo TryAgain

(你不需要:在这些语句中,这是巧合,因为它也被用来分隔一行中的多个语句,所以在这里只是没有意义)。

您可以通过在代码本身内进行testing并使用If块和Do循环(等)来避免Error HandingGoTo语句(这绝对是最佳实践)。

看到这个代码应该完成相同的事情:

 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