【问题标题】:Error handling with loop and user input循环和用户输入的错误处理
【发布时间】:2015-10-22 18:56:27
【问题描述】:
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 名称。 但是在第二次输入错误后,代码没有转到错误处理程序,而是自行终止。

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

【问题讨论】:

    标签: excel vba error-handling


    【解决方案1】:

    您可以通过在代码本身内进行测试并使用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
    

    【讨论】:

      【解决方案2】:

      尝试Resume TryAgain 而不是GoTo TryAgain

      (这些语句中不需要:,这是巧合允许的,因为它也用于分隔一行内的多个语句,所以在这里没有意义。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-30
        • 2021-12-12
        • 2021-09-16
        • 2022-07-09
        • 1970-01-01
        • 2010-11-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多