数据validationselect后运行事件macros

我在名为report的工作表上build立了一个数据validation列表,每当我从列表中select一个项目时,我需要运行一个macros。 现在我有下面的代码,但它不工作。 它在VBA中运行,但是当我在工作表中selectItem时,它不会运行,看起来像我没有引用macros

Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address(True, True) = "$B$3" Then Select Case Target Case "ABCP" Call Macro1 Case "Accounting Policy" Call Macro2 Case Else 'Do Nothing End Select End If End Sub 

如果要在更改B3中的值时运行该过程(从数据validation列表中选取,则需要Worksheet_Change事件macros而不是Worksheet_SelectionChange。

此外,如果工作表中的任何内容将要更改,那么您将希望禁用事件,以便事件macros不会尝试在其本身之上运行。

 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$3" Then On Error GoTo bm_Safe_Exit Application.EnableEvents = False Select Case Target.Value2 Case "ABCP" Call Macro1 Case "Accounting Policy" Call Macro2 Case Else 'Do Nothing End Select End If bm_Safe_Exit: Application.EnableEvents = True End Sub 

当B3具有从列表中select的新值时,应该启动正确的子程序。 如果m Macro1和Macro2继续存在问题,则必须提供更多的细节(和代码)。

上面的代码似乎为我工作正常。

你把代码放在工作表代码中吗? 而不是一个模块?

在这里输入图像说明