У меня есть два диапазона данных, с которыми я хочу сравнивать и форматировать, если они совпадают. Поэтому я хочу отформатировать ячейку диапазона 1, если какая-либо из этих данных соответствует данным в диапазоне 2. Это то, что у меня есть до сих пор - оно работает до тех пор, пока я не изменю данные до диапазона 2, но не обновит его:Условные диапазоны форматирования
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim myRange As Range, cell As Range
Set myRange = Range("a9:a12")
For Each cell In myRange
If cell.Value = ActiveCell.Value And Not IsEmpty(ActiveCell.Value) Then
ActiveCell.Interior.ColorIndex = 3
End If
Next cell
End Sub
Проблема в том, что ячейка по-прежнему сохраняет цвета, которые были отформатированы из первого блока кода, поэтому как я могу изменить его, если данные во втором диапазоне изменены?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myRange1 As Range
Set myRange1 = Range("f9:f12")
If Not Intersect(Target, Range("f1:f6")) Is Nothing Then
If Application.WorksheetFunction.CountIf(myRange1, ActiveCell.Value) > 0 _
Then ActiveCell.Interior.ColorIndex = 3 Else ActiveCell.Interior.Color = xlNone
End If
End Sub
это uncoloring его, но мне нужно только это не UNCOLOR, если данные в диапазоне 2 диапазона данных больше не соответствует с любыми данными в первом. подумайте, что это похоже на выполнение vlookup, и если данные в первом диапазоне совпадают, он подсвечивается, если он не окрашен. Это то, что я пытаюсь выполнить - мой первый IF делает это, но как только я изменяю (обновляю) данные во 2-й строке, это не оспаривает его – exitleft
См. Редактирование. Возможно, вам придется обновить страницу. Это то, что вы хотите? –
Да, что работает отлично - спасибо! существует ли способ, которым эта процедура может выполняться как пользователь, вводящий в ячейку? – exitleft