Excel VBA:如果未在范围内找到值,请转到

SMO*_*ORF 3 excel vba excel-vba

我使用以下代码循环通过工作表1-31过滤每个工作表中的单元格中的值("E1")("RunFilter_2"),然后复制过滤范围并复制到工作表中的下一个空行( "RunFilter_2").

当它没有找到工作表的值("RunFilter_2")时的代码错误.活动工作表的第18列中的范围("E1").

所以我添加了一个范围检查,检查是否有工作表("RunFilter_2").范围("E1").值在列范围("R:R")中找到.

但是,如何移动到下一个如果rngFound什么都没有?

Sub RunFilter2()

Rows("5:5").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
Range("A1").Select

    Dim wb As Workbook
    Dim ws As Worksheet

    Set wb = ActiveWorkbook
    Set ws = wb.sheets("01")

         Dim WS_Count As Integer
         Dim I As Integer

         WS_Count = ActiveWorkbook.Worksheets.Count - 3

         For I = 1 To WS_Count

Dim LastRow As Long
LastRow = ActiveSheet.UsedRange.Rows.Count

sheets(I).Select

Columns("A:U").Select

Dim rng As Range
Dim rngFound As Range

Set rng = Range("R:R")

Set rngFound = rng.Find(sheets("RunFilter_2").Range("E1").Value)

If rngFound Is Nothing Then

'----------------------------------
' How do I code ... GO TO Next I
'----------------------------------

Else:

Selection.AutoFilter

ActiveSheet.Range("$A$1:$U" & LastRow).AutoFilter Field:=18, Criteria1:=sheets("RunFilter_2").Range("E1").Value

    Range("A1").Offset(1, 0).Select
    Rows(ActiveCell.Row).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy

sheets("RunFilter_2").Select

If Range("A4").Value = "" Then

Range("A4").Select

Else

Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select

End If

ActiveSheet.Paste
ws.Select
Application.CutCopyMode = False
Selection.AutoFilter
Range("A1").Select
sheets("RunFilter_2").Select

         Next I

End Sub
Run Code Online (Sandbox Code Playgroud)

Vit*_*ata 5

你可以这样做:

For I = 1 To WS_Count
    If rngFound Is Nothing Then goto NextIPlace
    your code
NextIPlace:
Next I
Run Code Online (Sandbox Code Playgroud)

但你应该重新考虑这样的写作,这不是一个很好的VBA练习GoTo.整个代码应该改变.在这里查看更多.一旦您的代码工作,请随时在https://codereview.stackexchange.com/提交,他们会给你很好的想法.