排序列触发器单击以运行宏...如何解决此问题?

时间:2015-07-08 21:30:49

标签: excel vba excel-vba cell columnsorting

我有一些代码在单击某些单元格时运行宏。问题是对列进行排序也会导致宏运行。如何对列进行排序时阻止此代码运行?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Selection.Count = 1 Then
        If Not Intersect(Target, Range("AI13:AI10000")) Is Nothing Then
            MsgBox "Hello World!"
        End If
    End If
End Sub

我很确定它无关紧要,但我的其余代码只是从一个工作簿中获取值并使用它来过滤另一个工作簿中的数据透视表。

谢谢!

1 个答案:

答案 0 :(得分:1)

排序将触发Worksheet_SelectionChange,因为在排序过程中选择了范围。使用Worksheet_BeforeDoubleClick代替将在所需单元格上双击运行宏,并且不会通过排序触发事件。

以下代码对我有用:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Selection.Count = 1 Then
        If Not Intersect(Target, Range("AI13:AI10000")) Is Nothing Then
            MsgBox "Hello World!"
        End If
    End If
End Sub