2013-08-20 22 views
0

我有一個訂購表格,可以訂購6類設備。我正在嘗試製作自定義標籤順序,將活動單元格移到適用於所選特定類型設備的下一列。例如,如果用戶選擇我想從列E移動到F的單元,則跳過G,H,& I並直接移到K.之後,我想移動到下一行的列E中。我只希望這個標籤以申請報告已在B列有條件的標籤順序取決於特定單元中的數據

它會工作會喜歡的方式,行數:

如果在活動行的B列的單元格爲> = 1,則

如果在有源行的塔E細胞是塔E然後

空白去如果在有源行的塔E細胞等於單位標籤順序E,F,K,M,下一個E行 否則,如果活動行的列e中的單元格等於椅子標籤順序E,F,G,H,I,K,M下一行E

{etc ...}

我無法將該意義寫入代碼形式。

回答

0

那麼,如果我正確理解你想用自己的替換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鍵。

+0

我沒有得到宏,除非我點擊進入開發。選項卡,並選擇執行tabintercept宏,我複製你的激活,停用和製表符攔截宏...我感謝幫助! –

+1

您確定在工作表對象中有Worksheet_Activate和Worksheet_Deactivate嗎?在Worksheet_Activate中設置斷點以查看是否觸發。當您從另一個工作表切換到該工作表時,它應該會觸發。這個想法是,它可以在電子表格處於活動/可見狀態時啓用鍵盤截取功能,並在其他電子表格中禁用該功能。您還可以將'Application.OnKey'代碼移動到模塊中的公共子代碼中,並手動啓用它以進行測試。 – AndASM

相關問題