Worksheet_change:当单元格中的值没有改变时,我不希望它激活

时间:2018-04-11 02:55:49

标签: excel vba

目前,当用户对单元格的值进行任何更改时,我正在使用worksheet_change自动更改单元格颜色。但是,我的else子句在用户进入和离开单元格而不更改单元格的值时运行(用户可能双击一个单元格,然后单击另一个单元格而不是按下escape。)。如何修改我的代码,以便Else子句仅在用户更改了单元格的值时才会运行?

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:Z200")) Is Nothing Or Target.Cells.Count > 1 Then

Exit Sub

Else

Range(Target.Address).Interior.ColorIndex = 43

End If

2 个答案:

答案 0 :(得分:0)

你要么:

  1. 教育用户推送Escape而不是Enter,如果他们已经离开 进入编辑模式但改变了主意;或
  2. 制作范围的副本,检查副本的值以及是否 他们进行了更改,使用新值更新副本并进行更改 原始的细胞颜色。

答案 1 :(得分:0)

请试一试......

Dim oVal
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.CountLarge > 1 Then Exit Sub
If Not Intersect(Target, Range("A1:Z200")) Is Nothing Then
    If Target <> oVal Then
        Range(Target.Address).Interior.ColorIndex = 43
        oVal = Target
    End If
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.CountLarge > 1 Then Exit Sub
If Not Intersect(Target, Range("A1:Z200")) Is Nothing Then
    oVal = Target.Value
End If
End Sub