2015-03-10 2 views
0

У меня есть некоторые ячейки с проверкой, но неверные данные могут быть введены в ячейки, вставив их. Когда пользователь вставляет данные в ячейку, я хотел бы сделать ячейку красной, если данные недействительны, или восстановить ее до белого, если данные действительны.Отметить недействительные ячейки делает невозможным отмену

Я использую следующее событие рабочего листа:

Private Sub worksheet_change(ByVal target As Range) 

If Not target.Validation.value Then 
    target.Interior.ColorIndex = 3 
Else 
    target.Interior.ColorIndex = 2 
End If 

End Sub 

Это выполняет требуемое изменение цвета, но это также делает невозможным, чтобы отменить. Есть ли способ реализовать этот тип окраски ячеек, в то же время позволяя пользователю отменить действия вставки?

+3

Будет ли условный формат не делать то же самое для вас? – PaulFrancis

+2

@PaulFrancis, действительно. Я собираюсь реализовать условное правило форматирования с использованием функции 'is_valid()', аналогичной [этому ответу] (http://stackoverflow.com/a/20959389/619177). Не стесняйтесь публиковать это как ответ, если хотите. – sigil

+0

Это может быть излишним, но у меня также было требование прекратить проверку ячеек, написанных при вставке пользователей. Я нашел этот фрагмент кода, который использует очередь отмены, чтобы изменить пасту в специальную вставку, которая сохраняет любую проверку ячейки [link] (http://www.yogeshguptaonline.com/2009/04/macros-in-excel- disable-cut-copy-paste.html) –

ответ

0

Согласно ответу PaulFrancis, я смог выполнить это, используя условное форматирование.