控制行标题的双击事件

Bre*_*man 6 excel vba double-click

所以我非常熟悉为工作表事件(例如双击)引用工作表范围。但是,在这种情况下,我希望在双击行标题而不是单元格时进行引用。它仍然特定于工作表,但到目前为止我没有成功。

我有多个范围在双击时执行不同的事件,因此我使用类似于以下示例的代码:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim rWatchRange As Range
    Dim sWatchRange As Range

    Set rWatchRange = Range("A5:A1000")

    'I somehow need it to recognize if the row header is 
    'double clicked between row 5 and 1000 to fire off the second sub

    Set sWatchRange = Range("5:1000")


    If Not Application.Intersect(Target, rWatchRange) Is Nothing Then
        Run "aFormattingSub"
    End If

    If Not Application.Intersect(Target, sWatchRange) Is Nothing Then
        Run "aSubToInsertNewLineAndGroupWithRowAbove"
    End If      
End Sub
Run Code Online (Sandbox Code Playgroud)

我不确定 Excel 中是否有工作表参考、应用程序参考或我所知道的可以执行此操作的设置。

Kek*_*mau 8

双击标题时不会触发 DoubleClick 事件。我不认为有任何微不足道的方法来解决这个问题——你必须忍受所提供的事件。

我认为还有足够的空间来实现更多的功能。
为了给您更多的想法,您可以通过双击或按住 ctrl 右键单击​​来执行不同的操作。

一个在按住 ctrl 的情况下对右键单击做出反应的示例,并且仅在选择整行时:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    If (GetKeyState(KeyCodeConstants.vbKeyControl) And &H8000) And _
        Selection.Address = Selection.EntireRow.Address Then

        Cancel = True
        ' ... code
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

And &H8000有必要仅对当前出现的做出反应并忽略以前的按键)

在模块中导入 API 函数:

Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Run Code Online (Sandbox Code Playgroud)