2014-09-05 29 views
3

所以我很熟悉为工作表事件引用工作表范围,如双击。在这种情况下,我期待在行标题被双击而不是单元格时引用。它仍然是特定于工作表,但到目前为止我还没有成功。控制行标题的双击事件

我有上双击做不同事件的多个范围,所以我使用类似于下面的示例代码:

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可以做到这一点。

+0

对不起,我听不懂你的问题 – 2014-09-05 07:40:49

回答

3

双击标题时,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 

(该And &H8000是必要的反应只有当前存在以及忽略以前按键)

导入模块中的API函数:

Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer 
+0

它像一个魅力。非常感谢你。 – 2014-09-05 16:15:47