单元格值更改时自动运行macros(未由用户更改)

有没有一种方法可以改变macros时更改macros,而不一定当用户更改值时?

例如,我有一个checkbox链接到单元格“A1”。 当checkbox被选中时,A1未被选中时读取“TRUE”,则读取“FALSE”。 当A1在TRUE和FALSE之间变化时,我想要一个macros运行。

我已经看到Private Sub Worksheet_Change代码,但似乎只有当用户实际更改单元格A1时才起作用。 是否有另一种方法来自动运行macros?

更新11/29/13谢谢大家的build议,但不幸的是,它没有完全解决。 让我试着进一步扩大。

我有一个checkbox,下拉列表和文本字段的用户表单。 来自用户表单的所有数据都汇总在工作表的B列中(这是所有用户表单字段链接的地方)。 当macros运行时,一些计算发生,用户得到一些数字。

当用户更改用户表单中的内容时,我想让macros自动运行。 我知道这有可能成为资源密集型的,但当谈到这个问题时我会处理这个问题。 我想有一个过程,说如果B1:B20范围内的任何单元格的值改变,然后运行macros。 我相信这个方法比告诉每个用户表单域运行相同的macros更容易,因为稍后可以更容易地展开和更新这个表单,特别是当其他人接pipe维护时。

我可以有一个button,用户可以点击来填写表单时运行macros,但我可以预见不准确的信息,因为用户忘记重新计算; 这就是为什么我想自动完成并实时更新数字。

从我能告诉你必须列举可能被改变的细胞或在任何细胞改变时采取行动。 这是一个示例函数。

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" or Target.Address = "$A$2" Then Sheet1.Range("A3").Interior.Color = RGB(255, 0, 0) End If End Sub 

在VBA函数的第一行使用“Application.Volatile”

 Function A() Application.Volatile End Function 

Worksheet_Change始终工作,但你需要有application.enableevents = true或不会。 但是我不喜欢if target.address部分,我更喜欢:

 Private Sub Worksheet_Change(ByVal Target As Range) select case target.address 'or target.row, column... case "$A$1" application.enableevents=false 'or the change sub will trigger again on changes! code application.enableevents=true case "$A$2" application.enableevents=false 'or the change sub will trigger again on changes! code application.enableevents=true end select end sub