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

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

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

我不确定是否知道工作表引用,应用程序引用或Excel中的设置可以做到这一点。

最佳答案

双击标题时,不会触发DoubleClick事件。我认为这没有任何微不足道的方法-您必须接受所提供的事件。

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

仅在选择了整行的情况下,对按住Ctrl键的右键单击使用react的示例:

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

(And &H8000是仅对当前存在的作出 react 并忽略先前的按键所必需的)

将API函数导入模块中:
Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

关于excel - 控制行标题的双击事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25677897/

10-13 08:03