我想循环遍历 P 列并查看其中是否有一个单元格包含数字“1”,然后同时循环遍历 N 列以查看同一行/列中是否也有数字“1”,如果 N 列中没有“1”,同时 P 列中有数字“1”,则应该出现错误消息。
这是我开始做的但似乎效果不太好。
For Each a In Range("p6:p40")
If a.Value = "1" Then
For Each c In Range("n6:n40")
If c.Value = "" Then
msgbox("check again")
Else
msgbox("check again")
End If
Next
End If
Next
答案1
您可以将循环更改为常规 for 循环:
For i = 6 To 40
If Range("P" & i) = "1" Then
If Range("N" & i) <> "1" Then
MsgBox "P = 1 but N did not on row " & i
End If
Else
End If
Next
答案2
如果要检查 P 列所检查的同一行中的值,则不需要对 N 列进行另一个循环。请尝试以下方法:
Sub test()
For Each a In Range("p6:p40")
If a.Value = "1" Then
If a.Offset(0, -2).Value = "" Then
MsgBox ("blank in row " & a.Row)
Else
MsgBox ("not blank in row" & a.Row)
End If
End If
Next
End Sub
另外,还有一个调试技巧:如果你有两个不同的两个 IF 分支的消息。否则,您如何知道刚刚触发了哪个 IF 分支?