/ / Se o intervalo de condições não funcionar - excel, vba, excel-vba

Se o intervalo de condições não funcionar - excel, vba, excel-vba

Não consigo fazer o código abaixo funcionar quandovocê copia e cola valores nas colunas A, C e D. Se, por exemplo, eu estiver na linha2 e inserir dados na célula A2, C2 e D2, o código fará seu trabalho. Mas se eu copiar e colar dados nas linhas 3, 4, 5, o código não verificará mais a condição. Eu realmente aprecio se alguém puder me ajudar a corrigir esse problema. Obrigado!

Sub LogicalPart(i As Long)

If (Cells(i, "C") + Cells(i, "D")) <> Cells(i, "A") Then
MsgBox "C" & i & " + D" & i & " must equal cell A" & i & " which is: " & Range("A" & i).Value
MsgBox ("Please insert again the data in cell C" & i & " or D " & i & "!")
Cells(i, "C").Interior.Color = RGB(255, 0, 0)
Cells(i, "D").Interior.Color = RGB(255, 0, 0)

Else
Range(Cells(i, "C"), Cells(i, "D")).Interior.Color = RGB(1000, 1000, 1000)
End If

End Sub



Private Sub Worksheet_Change(ByVal Target As Range)

If Not Application.Intersect(Range("C1:d10"), Target) Is Nothing Then
LogicalPart Target.row
End If


End Sub

Respostas:

3 para resposta № 1

Você precisa iterar as linhas no intervalo de destino:

Target.Row

Retornará apenas a primeira linha e nem todas:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Dim rngrow As Range
Set rng = Intersect(Range("C1:d10"), Target)
If Not rng Is Nothing Then
For Each rngrow In rng.Rows
LogicalPart rngrow.Row
Next rngrow
End If


End Sub