Vba 标记无效单元格会导致无法撤消

Vba 标记无效单元格会导致无法撤消,vba,validation,excel,Vba,Validation,Excel,我有一些带有验证的单元格,但可以通过粘贴将无效数据输入单元格。当用户将数据粘贴到单元格中时,如果数据无效,我希望将单元格变为红色,如果数据有效,则将其恢复为白色 我正在使用以下工作表事件: Private Sub worksheet_change(ByVal target As Range) If Not target.Validation.value Then target.Interior.ColorIndex = 3 Else target.Interior.ColorI

我有一些带有验证的单元格,但可以通过粘贴将无效数据输入单元格。当用户将数据粘贴到单元格中时,如果数据无效,我希望将单元格变为红色,如果数据有效,则将其恢复为白色

我正在使用以下工作表事件:

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

这将执行所需的颜色更改,但也使其无法撤消。有没有办法在允许用户撤消粘贴操作的同时实现这种类型的单元格着色?

根据PaulFrancis的回答,我可以使用条件格式来实现这一点。

条件格式对你来说会不会不一样?@PaulFrancis,确实会。我将使用类似于的is_valid函数实现一个条件格式规则。如果您愿意,可以将此作为答案发布。这可能有点过分,但我也有一个要求,即阻止用户在粘贴时过度编写单元内验证。我发现这段代码使用undo队列将粘贴更改为paste special,它保留任何单元格内验证,并且在代码执行后禁用undo。您必须将该值保存在某个位置,并以编程方式还原它。