[英]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.