Você pode alterar o loop para um loop regular:
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
Eu quero percorrer a coluna P e ver se há uma célula que tenha o número "1" e, ao mesmo tempo, passar pela coluna N para ver se há também um número "1" na mesma linha / coluna, se não houver um "1" na coluna N, ao mesmo tempo, há um número "1" na coluna P, deve haver uma mensagem de erro.
Aqui está o que eu comecei, mas não parece estar funcionando tão bem.
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
Você não precisa de outro loop para a coluna N se quiser verificar um valor na mesma linha em que está inspecionando a coluna P. Tente seguir as linhas:
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
Além disso, apenas uma dica para depuração: ajuda imensamente se você tiver duas mensagens diferentes para os dois ramos IF. Caso contrário, como você sabe qual ramo IF foi acionado?
Tags microsoft-excel-2007 vba