最近因某项目的客户需求,需要使用vba,监听某工作簿的某工作表内单元格的值是否发生变化(在已有值上手动修改或者在空白处添加新值),如果有变化设置变化后的单元格的字体为红色。
作为初学vba的小白,在网上查了很多教程,但大多有漏洞,故在此记录一下。
一、最简单的处理
首先,查到的第一个简单的写法是直接在excel中选中工作表,右键查看代码,直接插入
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Font.Color = vbRed
End Sub
利用excel的Worksheet_Change监听单元格变化,触发之后就设置字体颜色为红色。这样做虽然内容改变之后会变红,但是如果只是双击任意单元格没有进行修改,字体也会变红。
二、添加原本单元格值的验证
第二种写法在此基础上进行了值的验证:
Dim OldValue
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value <> OldValue Then
Target.Font.Color = vbRed
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
OldValue =