簡體   English   中英

For循環內的if語句

[英]If statement within a For-Loop

我試圖讓for循環遍歷一列以查找“否”,如果找不到“否”,它將在另一個單元格中輸出“是”。 因此,我的思維過程是進行for循環,然后執行if語句,如果該單元格顯示“是”或“沒有要求”,則它將繼續尋找“否”,如果未找到“否”,則輸出“是”,如果找到,則循環停止,並輸出“否”。

我正在制作一個工具,可以從同一Excel工作簿上的不同工作表中提取數據。

Sub PleaseWork()

Dim matrix(i, j) As Double


For i = 26 To 33
    For j = 8 To 8
        If Worksheets("Calculations").Range(i, j) = "Yes" Or "No Requirement" Then
            Worksheets("Calculations").Range("H33").Value = "Yes"
            Next i
        Else
            Worksheets("Calculations").Range("H33").Value = "No"
        End If



End Sub

該代碼甚至無法運行,每次嘗試運行它時都會出現編譯錯誤。 我是VBA的新手,並且知道這可能超級簡單,但我似乎無法理解。

Next i需要位於If-End If並且您需要在For i循環中添加Next j ,以便代碼甚至運行。 另外,如果j = 8 ,則第二個循環將只運行一次,您可以完全消除它。

說起來會容易得多

For i = 26 To 33
    If Worksheets("Calculations").Cells(i, 8) = "Yes" Or Worksheets("Calculations").Cells(i, 8) = "No Requirement" Then
        Worksheets("Calculations").Range("H33").Value = "Yes"
    Else
        Worksheets("Calculations").Range("H33").Value = "No"
    End If
Next i

我不確定如果只瀏覽一列,為什么還要在此處使用矩陣。

下面的代碼將檢查該列(如果您願意的話,可以將其設置為動態范圍),並在第一個值“ No Requirement”的單元格處停止-然后輸出該值和“ No”的單元格的地址,然后退出循環。

Sub RandomCol()

For Each cell In Worksheets("Calculations").Range("A1:A50")

    If cell.Value = "Yes" Or cell.Value = "No Requirement" Then

    ElseIf cell.Value = "No" Then
        Range("H33").Value = (cell.Address + " " + "No")
        Exit For
    End If

Next cell

End Sub

我希望這有幫助。

以下應該適合您的目的:

    Sub RunIt()
      '          A, E, 1, 5
      PleaseWork 1, 5, 1, 5
    End Sub

    Sub PleaseWork(intFromCol As Integer, intToCol As Integer, intFromRow As Integer, _
                   intToRow As Integer)

        Dim intI As Integer
        Dim intJ As Integer
        Dim blnFoundNo As Boolean
        Dim strOut As String

        strOut = "Yes"
        blnFoundNo = False
        For intI = intFromCol To intToCol
            For intJ = intFromRow To intToRow
                '                                     Row , Col
                With Worksheets("Calculations").Cells(intJ, intI)
                    If LCase(Trim(.Value)) = "no" Then
                        strOut = Replace(Cstr(.Address), "$", "") & " = No"
                        blnFoundNo = True
                        Exit For
                    End If
                End With
            Next intJ
            If blnFoundNo Then Exit For
        Next intI

        Worksheets("Calculations").Range("H33").Value = strOut

    End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM