【问题标题】:VBA if Else within For Next [duplicate]VBA if Else 在 For Next [重复]
【发布时间】:2019-06-22 01:22:54
【问题描述】:
        'I don't know how to write the code, but this is the goal:

        'Loop through cells A1 to A10. 
        'Test if cell A1 meets condition. 
        'If not, go to A2. 
        'If yes, do procedure, then go to A2. 

        Sub TestForIfElse()

        Dim Counter As Integer
        Dim Counter2 as Integer
        Dim i As Integer

        For i = 1 To 5

            Counter = i

            If Counter > 3 Then  'GOTO NEXT i LOOP

        Next i   'ERROR MSG NEXT WITHOUT FOR

            Else

            Counter2 = Counter2 + i

            End If

        Next i   'GOTO NEXT i LOOP

    End Sub

预期:运行下一个循环。
在条件的循环测试中。
如果满足条件,则进入下一个 For 循环。 如果条件不满足,做其他事情,然后去 下一个 for 循环。 代码块上标记的错误消息。

【问题讨论】:

  • 去掉第一个Next iElse,将条件改为<=3
  • 你不能交错循环
  • 尊重块结构。即使它是“基本”... ;)
  • 了解其他类型的循环(WhileUntil)。了解循环是编程的基础。

标签: vba for-loop if-statement


【解决方案1】:

您尝试这样做的方式是破坏 for loops 的块结构。

根据下面的 cmets,您可以在 Range("A1:A10") 中循环每个单元格并在该循环中进行验证。如果它包含值“*”,则调用您的过程。否则,您的循环将转到您范围内的下一个单元格引用。

Sub TestingLoops()

    Dim Target As Range
    Set Target = ActiveSheet.Range("A1:A10")

    Dim Cell As Range
    For Each Cell In Target
        If InStr(Cell.Value, "*") > 0 Then
            SomeProcedure Target
        End If
    Next Cell

End Sub

您调用的过程可以在您的range 参考中使用,或者如果您需要,它的价值。这是我将引用传递给range 的示例。

Private Sub SomeProcedure(ByRef Target As Range)
    'do something
End Sub

【讨论】:

  • 欣赏。也许我想做的事情不能在嵌套循环中完成。我想做一个 i 循环并测试一个条件,如果满足,则执行一个过程。如果没有遇到,请转到下一个 i。也许我必须运行 FirstLoop 并确定符合该过程的单元格,然后在这些单元格上返回 SecondLoop 过程。
  • 您能edit 您的代码并包含您实际想要完成的任务吗?这可能会提供更好的方向,并且您可以获得更直接满足您需求的答案。
  • 循环通过单元格 A1 到 A10。测试单元格 A1 是否包含字符 *。如果没有,请转到 A2。如果是,请执行程序,然后转到A2。
猜你喜欢
  • 2019-11-03
  • 1970-01-01
  • 1970-01-01
  • 2013-12-01
  • 1970-01-01
  • 2014-08-08
  • 1970-01-01
  • 2021-11-25
  • 1970-01-01
相关资源
最近更新 更多