繁体   English   中英

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

[英]Worksheet_change: i do not want it to activate when value in cell does not change

当前,当用户对单元格的值进行任何更改时,我正在使用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

您要么必须:

  1. 如果用户已进入“编辑”模式但改变了主意,请教育用户按Escape而不是Enter。 要么
  2. 制作范围的副本,对照副本检查值,如果更改了,请使用新值更新副本并更改原始单元格颜色。

请尝试一下...

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM