2014-09-05 30 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