我在名为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
答案 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)