当特定单元格中的值发生变化时,如何运行宏?

时间:2011-01-25 10:46:28

标签: excel vba excel-vba excel-2007

让我先说一下我对VB很新...

每当某个单元格中的值发生变化时,我都会尝试运行宏。我已经读过如何做到这一点,但似乎无法让它发挥作用。我已将以下代码输入到工作表对象的私有模块中:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Target.Worksheet.Range("$C$5")) Is Nothing Then

        Application.Run _

            "'Amex Payments_Experiment.xlsm'!SelectCells"

    End If    

End Sub

C5是我试图监控变化的单元格。 “SelectCells”是我想要运行的宏。 “Amex Payments_Experiment.xlsm”是文件的名称。

当我改变C5中的值时,没有任何反应。一些帮助会很棒。谢谢!


更新:

Cyber​​kiwi - 不,这不完全是我做的,但当我按照你的指示时,我确实找到了你应该说的代码。要进入工作表对象的私有模块,我右键单击底部的工作表选项卡,选择“查看代码”,然后从页面顶部中心的下拉列表中选择“工作表”。

User587834 - 是的。宏已启用。

还有其他建议吗?

4 个答案:

答案 0 :(得分:1)

如果使用Excel2007,请确保启用了宏,默认情况下,Excel 2007会停用新工作簿的宏执行。 为此尝试执行任何其他宏以确保宏已启用。

答案 1 :(得分:0)

  

我已将以下代码输入到工作表对象的私有模块中:

你究竟是怎么做到的?如下所示?

  • Alt-F11切换到代码视图
  • 在左侧,双击目标表格
  • 在右边,你看到你输入的代码了吗?如果没有,请继续下一步
  • 粘贴代码块

答案 2 :(得分:0)

这段代码对我有用

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Target.Worksheet.Range("$C$5")) Is Nothing Then
        MsgBox "hello"
    End If
End Sub

问题可能与您的Application.Run有关: - 选择包含相交的行,然后单击F9以打开Debug,然后尝试更改单元格以查看是否到达子。 如果您从未到达该行,那么您没有在工作表clkass模块中获得代码,或者您已关闭事件,或者宏被禁用或...

答案 3 :(得分:0)

检查Application.EnableEvents属性,并根据需要将其设置为True