编辑时更改单元格的格式

时间:2018-06-12 08:14:19

标签: excel vba excel-vba

如果值更改,我想更改单元格的格式。我只是需要它被遮蔽。

我正在尝试使用以下内容:

Private Sub Worksheet_Change(ByVal Target As Range)
    Target.Interior.ColorIndex = 45
End Sub

然而,这太敏感了。例如,如果我删除一行,整行会改变颜色,因为技术上它是一个变化。即使我进入一个单元格,不做任何更改并退出它,它也会改变格式。

是否有编辑上面的内容所以它只在值发生变化时格式化单元格?

由于

1 个答案:

答案 0 :(得分:1)

我认为您可以使用以下代码作为进一步逻辑的基础。

这个想法是:我们需要在更改之前记住值,所以当选择某个范围时最好阅读它(因为你在谈论单个单元格,我没有考虑由更多单元组成的范围)。该值将存储在全局变量ValueOnEnter中。

当最终做出改变时,我们比较"之前"在"之后,如果它们不同,请更改颜色。

Public ValueOnEnter As String

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Target.Value <> ValueOnEnter Then
        Target.Interior.ColorIndex = 45
    End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    ValueOnEnter = Target.Value
End Sub