2013-10-11 15 views
0

Мне нужна помощь с функцией, которая может изменить цвет ячейки на основе, если значение ячейки равно значению другого, в настоящее время ячейка имеет значение = COUNT (##: ##), и мне нужно изменить цвет с красного на зеленый, если это значение равно значению в другой ячейке.Excel VBA Изменение цвета ячейки на основе значения

С моим ограниченным знанием VBA и первенствовать я придумал этого

Function ChangeColor(CellColor As Range) 
Application.Volatile True 
If CellColor = cell.Value Then ChangeColor = cell.Interior.ColorIndex = 14 
End Function 

Я предпочел бы не использовать условное форматирование, если это вообще возможно, но я открыт к нему в крайнем случае, если это необходимо. Спасибо за вашу помощь и за то, что помогли мне с предыдущими вопросами, это сообщество замечательно.

+3

Функция, вызванная с листа, не может вносить никаких изменений в лист, поэтому вы застряли в условном форматировании или обрабатываете событие workheet_calculate. –

+1

И если вам удалось это сделать в workheet_calculate или какие-то другие средства, каждый раз, когда он запускается, он очистит вашу историю отменить. Поскольку вы отмечаете этот Volatile, вы в значительной степени собираетесь работать без стека отмены. –

+0

Это всего лишь одна ячейка? или несколько ячеек в определенном месте (например, столбец «итоговые»)? потому что вы можете использовать событие workheet_change, чтобы следить за изменениями этих конкретных ячеек. Однако это звучит как работа для условного форматирования. – NickSlash

ответ

0

Я думаю, вы просто с помощью условного форматирования я знаю функция не может изменить цвет или использовать макрос

If CellColor = Selection.Value Then CellColor.Interior.ColorIndex = 14 

я так жаль, что это я знаю

1

Я сделал код, приведенный ниже выделите ячейки в столбце, которые были одинаковыми. Условное форматирование не позволило мне каскадировать формулу «равную ячейке выше», может быть, я просто не сделал этого правильно. В любом случае, это сработало, и его легко изменить и добавить к нему. Этот пример можно легко изменить в соответствии с вашими проблемами.

Sub checkduplicates() 
Dim Loop1 As Integer 
Dim Loop1StartRow As Integer 
Dim Loop1EndRow As Integer 
Dim Loop1Count As Integer 
Dim Current As Integer 
Dim NextOne As Integer 

Loop1StartRow = 4 '4 HYIDAS 
Loop1EndRow = 330 '330 HYIDAS 
Loop1Count = 0 

For Loop1 = Loop1StartRow To Loop1EndRow 
    Worksheets("HYIDAS").Activate 
    Loop1Count = Loop1Count + 1 
    Current = Range("H" & Loop1) 
    NextOne = Range("H" & Loop1 + 1) 
    If Current = NextOne Then 
     Range("H" & Loop1).Interior.Color = 220 
     Range("H" & Loop1 + 1).Interior.Color = 220 
    End If 
Next Loop1 
End Sub 
Смежные вопросы