数据验证选择后运行事件宏

时间:2016-05-09 15:48:46

标签: excel vba excel-vba events

我在名为report的工作表上建立了一个数据验证列表,每次从列表中选择一个项目时我都需要运行一个宏。现在我在下面有这个代码,但它不起作用。它确实在VBA中运行,但是当我在工作表中选择Item时它不会运行,似乎我没有引用宏

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

2 个答案:

答案 0 :(得分:4)

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

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

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从列表中选择新值时,这应该启动正确的子过程。如果m Macro1和Macro2仍然存在问题,则必须提供更多详细信息(和代码)。

答案 1 :(得分:1)

以上代码似乎对我有用。

您是否已将代码放在工作表代码中?而不是模块?

enter image description here