/ / Jeśli zakres warunków nie działa - excel, vba, excel-vba

Jeśli zakres warunków nie działa - excel, vba, excel-vba

Nie mogę wykonać poniższego kodu, aby działał, gdykopiujesz i wklejasz wartości w kolumnach A, C i D. Jeśli na przykład jestem w wierszu 2 i wstawiam dane do komórki A2, C2 i D2, kod wykonuje swoje zadanie. Ale jeśli skopiuję-wkleję dane w wierszu 3, 4, 5, kod nie sprawdza już tego warunku. Naprawdę byłbym wdzięczny, gdyby ktoś mógł mi pomóc rozwiązać tę sprawę. Dzięki!

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

Odpowiedzi:

3 dla odpowiedzi № 1

Musisz iterować wiersze w zakresie docelowym:

Target.Row

Zwróci tylko pierwszy wiersz, a nie wszystkie:

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