如果.Find在Excel VBA中找不到任何内容,请转到for循环的下一次迭代

时间:2016-07-12 16:44:52

标签: excel excel-vba loops for-loop vba

For j = 1 To i
    If j = 1 Then FY = FY1
    If j = 2 Then FY = FY2
    If j = 3 Then FY = FY3
    If j = 4 Then FY = FY4
    If j = 5 Then FY = FY5
    If j = 6 Then FY = FY6
    If j = 7 Then FY = FY7
    If j = 8 Then FY = FY8
    If j = 9 Then FY = FY9
Sheets("Calcs").Select
Sheets("Calcs").Range("6:6").Find(FY).Select
With Worksheets(TabName).Range("C:C")
    Set FYFindj = .Range.Find(FY, LookIn:=xlValues)
End With
    If FYFindj Is Nothing Then
        Next j
    End If

在结束If语句之后,它会做一堆效果很好的东西。如果找不到特定的FY,我希望宏转到j的下一次迭代。

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

使用GOTO声明

For j = 1 To i
    If j = 1 Then FY = FY1
    If j = 2 Then FY = FY2
    If j = 3 Then FY = FY3
    If j = 4 Then FY = FY4
    If j = 5 Then FY = FY5
    If j = 6 Then FY = FY6
    If j = 7 Then FY = FY7
    If j = 8 Then FY = FY8
    If j = 9 Then FY = FY9

    Sheets("Calcs").Select

    With Worksheets(TabName).Range("C:C")
        Set FYFindj = .Range.Find(FY, LookIn:=xlValues)
    End With
    If FYFindj Is Nothing Then
        GoTo Exit_Loop
    End If
Exit_Loop:

Next j

OR,使用条件逻辑:

For j = 1 To i
    If j = 1 Then FY = FY1
    If j = 2 Then FY = FY2
    If j = 3 Then FY = FY3
    If j = 4 Then FY = FY4
    If j = 5 Then FY = FY5
    If j = 6 Then FY = FY6
    If j = 7 Then FY = FY7
    If j = 8 Then FY = FY8
    If j = 9 Then FY = FY9

    Sheets("Calcs").Select

    With Worksheets(TabName).Range("C:C")
        Set FYFindj = .Range.Find(FY, LookIn:=xlValues)
    End With
    If Not FYFindj Is Nothing Then
        '### DO a bunch of stuff that works great HERE

    Else:
        '### DON'T DO ANYTHING
    End If


Next j

答案 1 :(得分:0)

您可以使用条件If来测试找到的范围,如果不存在则继续前进。我在您的问题中重构了代码,并清理了FY的设置。

For j = 1 To i

    Select Case j
        Case 1 To 9: FY = "FY" & j
    End Select

    With Worksheets(TabName)

        If Not .Range("C:C").Find(FY, LookIn:=xlValues) Is Nothing Then

            Set FYFindj = .Range("C:C").Find(FY, LookIn:=xlValues)
            'do stuff

        End If

    End With

Next

答案 2 :(得分:-1)

这是我之前评论的后续内容     对于j = 1到i

    If j = 1 Then FY = FY1
    If j = 2 Then FY = FY2
    If j = 3 Then FY = FY3
    If j = 4 Then FY = FY4
    If j = 5 Then FY = FY5
    If j = 6 Then FY = FY6
    If j = 7 Then FY = FY7
    If j = 8 Then FY = FY8
    If j = 9 Then FY = FY9
Sheets("Calcs").Select

With Worksheets("Calcs").Range("6:6")
    Set FYFindj = .Range.Find(FY, LookIn:=xlValues) 'This is where I get the Run-Time Error
End With

If Not FYFindj Is Nothing Then
Sheets("Calcs").Range("6:6").Find(FY).Select
    addr = ActiveCell.Address