【问题标题】:How to do an if statement inside a loop?如何在循环中执行 if 语句?
【发布时间】:2019-05-06 11:16:47
【问题描述】:

循环中的 if 语句有问题。每次我尝试运行它时,它都会给我一个错误:

没有for的下一个

Sub CheckDates4()

    Dim count As Integer
    Dim i As Integer
    Dim j As Integer

    count = 0
    i = 2
    j = 24

    For i = 2 To 318
        For j = 46 To 1 Step (-2)
            If Sheet1.Cells(i, j) >= Sheet2.Cells(1, 1) And Sheet1.Cells(i, j - 1) = "Reçu" Then
                count = count + 1
            Next i
        Next j

    End If

    Sheet2.Cells(1, 7) = count

End Sub

任何想法如何解决这个问题?

【问题讨论】:

  • 将 Sheet2.Cells(1, 1) 放入变量中会更有效,以避免重复返回同一个单元格来检索其值。
  • 你搞砸了结束块语句。例如,如果 [] 代表 FOR-NEXT 而 {} 代表 IF-ENDIF,那么您的代码就像 [ [ { ] ] } 是错误的。理想情况下,在表示格式中,它应该是 [ [ { } ] ]。希望它很容易理解。

标签: excel vba loops


【解决方案1】:

您的END IF 放错了位置,并且您还更换了NEXTs

For i = 2 To 318
    For j = 46 To 1 Step (-2)
        If Sheet1.Cells(i, j) >= Sheet2.Cells(1, 1) And Sheet1.Cells(i, j - 1) = "Reçu" Then
            count = count + 1
        End If
    Next
Next

【讨论】:

    【解决方案2】:

    您应该首先用End If 关闭If 条件。然后,用Next j 关闭内部For 循环。最后,用Next i 关闭外部For 循环。因此,您的代码应如下所示:

    Sub CheckDates4()
        Dim count As Integer
        Dim i As Integer
        Dim j As Integer
    
        count = 0
        i = 2
        j = 24
    
        For i = 2 To 318
            For j = 46 To 1 Step (-2)
                If Sheet1.Cells(i, j) >= Sheet2.Cells(1, 1) And Sheet1.Cells(i, j - 1) = "Reçu" Then
                    count = count + 1
                End If
            Next j
        Next i
    
        Sheet2.Cells(1, 7) = count
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 2015-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多