基于单元格更改的macros

我已经find了解决这个问题的各种解决scheme,但是他们需要太多的自主权:我正在编写我的第一个视觉基础程序,所以我不太了解。 我已经尝试了这些解决scheme,但他们不工作,大概是因为我搞乱了build议的代码的位置。

我想根据单元格何时更改为某个值来运行macros。 我想要一个不同的macros,当单元格从上述值改变到其他的时候运行。 所以我有一个下拉列表的值A,B和C,我想运行macro_A时,值更改为A,而macro_notA当值更改为A以外的东西。

这是基本的问题。 从这里,我会提供一些额外的信息,关于我迄今为止所尝试的,以及在哪里遇到我的问题。 我目前正在使用一个具有以下基本结构的子:

Sub worksheet_change(ByVal target As Range) If Range("TargetCell").Value = "C" Then If Switch = "0" Then Switch = "1" Call Macro_A End If End If If Range("TargetCell").Value <> "C" Then If Switch = "1" Then Switch = "0" Call Macro_notA End If End If End Sub 

其中Switch是我在ThisWorkbook代码窗口中定义的variables,使用:

 Private Sub Workbook_Open() Dim Switch If Range("TargetCell").Value <> "A" Then Switch = "1" End If If Range("TargetCell").Value = "A" Then Switch = "0" End If End Sub 

具体的问题是,我使用的子似乎无法识别开关variables。 如果有人find一个更有效的方法来解决我在第二段中提出的问题,那也是很好的。 我敢肯定,我正在尝试的方式不是最有效的方式。

  1. 删除Dim Switch

  2. 创build一个新的模块。

  3. 将其命名为modPublic

  4. Public Switch as String在那里。

要么

创build一个新的工作表。 将其命名为tblSettings 。 写入单元格“A1”中的开关值。

在一个新的模块中,创build以下函数来获得交换机:

 Public Function TellMeTheSwitch() As Boolean TellMeTheSwitch = tblSettings.Range("A1") End Function 

创build下面的Sub来设置开关:

 Public Sub ChangeSwitch() tblSettings.Range("A1") = Not tblSettings.Range("A1") End Sub 

一般来说,不要使用Switch作为variables名,VBEditor使用它。 考虑mySwitchSwitchMe或其他东西。

如果您希望其他子例程能够“看到”它,则删除“ Dim Switch ,然后将“ Public Switch as String添加到子例程范围之外。