工作表更改事件不起作用

3

我在使用Worksheet_Change时遇到了问题。当我选择单元格时,即使我将错误放入代码中,Excel也没有反应。我将Worksheet_Change放在正确的工作表上,所以这不是原因。

我尽可能地简化了我的代码,但仍然没有反应。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$c$2" Then
        MsgBox "hi"
    End If
End Sub

4
大小写敏感 => 改为将 "$c$2" 更改为 "$C$2" - Dirk Reichel
尝试使用以下代码:If Target.Address = Range("C2").Address Then - findwindow
4
如果完全没有反应,那么尝试在子程序中将“Stop”作为第一个命令并检查是否会突出显示... 如果没有,请在直接窗口中输入“Application.EnableEvents = True”,然后再次尝试... 并确保您没有按下VBA窗口中的暂停按钮。 - Dirk Reichel
尝试了每一个建议,但是单元格的更改仍然没有反应。 - Richard Sto
在你的子程序中尝试使用单行MsgBox "hi",不要加其他内容... :s - Rosetta
2个回答

0
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Me.Range("C2"), Target) Is Nothing Then
        MsgBox "Great! Target is within the chosen range!"
    End If
End Sub

这个有效。我总是使用上面的结构。


我尝试了你的代码,但仍然没有任何反应,可能是程序或系统中的错误,或者可能是设置问题吗? - Richard Sto
尝试使用Dirk Reichel上面的建议:Application.EnableEvents = True - ZygD
1
我看到的所有建议都是正确的。重新启动Excel,你可能处于调试模式,许多人因为宏无法启动而恐慌,(你也可以点击(停止)方块)... - Patrick Lepelletier

0

我认为你想要触发的事件监听器是Worksheet_SelectionChange

若要使Worksheet_Change起作用,您需要在C3单元格中输入内容。


这不是当您选择单元格时要运行宏的时候吗? - Richard Sto
是的,我只是猜测,因为你说“当我针对单元格时”。 - Rosetta
也许宏被禁用了?再次猜测 :s - Rosetta
我尝试了另一种解决方案,但它也不起作用。当我手动调用模块宏时没有问题,因此通常情况下应该启用宏 :D - Richard Sto
1
尝试Dirk Reichel的建议。Application.EnableEvents = True 只需要运行一次,然后再尝试您的代码。 - Rosetta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接