那麼,如果我正確理解你想用自己的替換tab鍵的功能。爲此,您要使用Application.OnKey
。
一個簡單的例子,在VBA編輯器中打開Sheet1中,輸入以下代碼
Private Sub Worksheet_Activate()
Application.OnKey "{TAB}", "TabIntercept"
End Sub
Private Sub Worksheet_Deactivate()
Application.OnKey "{TAB}"
End Sub
然後插入一個模塊,並寫一個公用分類,如:
Public Sub TabIntercept()
ActiveCell.Offset(2).Activate
End Sub
現在在Sheet1中,標籤會正常情況下,選擇當前單元格下方的單元格2而不是右側單元格。
你可以用if語句來擴展它。例如下面的示例,其中標籤正常工作,除非光標在單元格A2上且B2的值爲5,否則它將跳轉到C3。
Public Sub TabIntercept()
If Not Intersect(ActiveCell, Sheet1.[A2]) Is Nothing And Sheet1.[B2] = 5 Then
Sheet1.[C3].Activate
Else
ActiveCell.Offset(0, 1).Activate
End If
End Sub
作爲一個側面說明,如果你想支持Shift-Tab鍵和騎自行車自定義選擇向後你需要寫第二子和另一呼叫添加到OnKey
方法。類似於Application.OnKey "+{TAB}", "ReverseTabIntercept"
。加號表示與您的can see in the documentation here一樣的Shift鍵。
我沒有得到宏,除非我點擊進入開發。選項卡,並選擇執行tabintercept宏,我複製你的激活,停用和製表符攔截宏...我感謝幫助! –
您確定在工作表對象中有Worksheet_Activate和Worksheet_Deactivate嗎?在Worksheet_Activate中設置斷點以查看是否觸發。當您從另一個工作表切換到該工作表時,它應該會觸發。這個想法是,它可以在電子表格處於活動/可見狀態時啓用鍵盤截取功能,並在其他電子表格中禁用該功能。您還可以將'Application.OnKey'代碼移動到模塊中的公共子代碼中,並手動啓用它以進行測試。 – AndASM