单元事件未触发

问题描述

需要有关单元事件宏的帮助,我正在测试单元事件宏,由于某种原因其未触发。请求您的帮助进行调查

代码


Private Sub Worksheet_Change(ByVal Target As Range)
If Range("J8").Value = "No" Then
MsgBox "Hi"
Else
Exit Sub
End If
End Sub

代码

不知道,这里的问题出在哪里,我的期望是在输入“否”时显示一个消息框。但是它不起作用

解决方法

下面是您需要的基本代码,并且必须将其安装在要对其执行操作的工作表的代码模块中,因为在其他任何地方都不会注意到更改事件。

Private Sub Worksheet_Change(ByVal Target As Range)

    Const TriggerCell   As String = "J8"
    
    If Target.Address(0,0) = TriggerCell Then
        If Target.Value = "No" Then
            MsgBox "Hi"
        End If
    End If
End Sub

此代码非常粗糙,仅用于说明以下原理。

  1. 该事件生成一个名为Target的范围。那是改变的细胞。如果使用复制/粘贴,则可以同时更改许多单元格。那么Target的范围会更大。
  2. 您必须确定更改后的单元格是否对您感兴趣。在上面的代码中,这是通过指定TriggerCell完成的。您可以指定一整列(但不能在上述设置中指定只能处理一个单元格的列)。
  3. 由于事件提供的Target是您指定的TriggerCell,因此您可以将其值与期望值进行比较,并根据比较结果采取行动。

请注意,在子结尾之前不需要ElseExit Sub