问题描述
需要有关单元事件宏的帮助,我正在测试单元事件宏,由于某种原因其未触发。请求您的帮助进行调查
代码
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
此代码非常粗糙,仅用于说明以下原理。
- 该事件生成一个名为
Target
的范围。那是改变的细胞。如果使用复制/粘贴,则可以同时更改许多单元格。那么Target
的范围会更大。 - 您必须确定更改后的单元格是否对您感兴趣。在上面的代码中,这是通过指定
TriggerCell
完成的。您可以指定一整列(但不能在上述设置中指定只能处理一个单元格的列)。 - 由于事件提供的
Target
是您指定的TriggerCell
,因此您可以将其值与期望值进行比较,并根据比较结果采取行动。
请注意,在子结尾之前不需要Else
或Exit Sub
。