這幾天遇到一個有點特別的需求。
需求
估計這位朋友是一位科研人員,在進行研究的過程當中,兩隻手沒法同時進行鍵盤輸入操作:右手需要擺弄和查看樣品,只能用左手在鍵盤上進行敲擊輸入。
他研究的樣品一共有三種,標記爲s,d,f三類。他需要做的事情是:右手邊查看樣品,左手在Excel中做記錄(即樣品對應的單元格中輸入s,d,f三個字母中的一個,同時單元格標記顏色),如下圖:
很顯然,每個樣品記錄的過程包括輸入數據(s,d,f),填充單元格顏色(紅,藍,綠),定位到下一個單元格等3個操作。
這位朋友每天操作的樣品都有成百上千個,每天都要花費大量的時間來記錄,故而向永恆君求助。
思路
其實,這位朋友就是想說,能否左手直接按一個鍵即可進行上述分類操作?
當然可以!
這次需要藉助Onekey方法來爲VBA自定義快捷鍵,幾乎可以定義鍵盤上所有的按鍵。
首先,上面提到的樣品記錄的過程的3個操作可以用vba代碼來實現;
然後,爲這個VBA代碼自定義一個快捷鍵,比如按下鍵盤"s"鍵,直接就實現了“輸入數據-填充單元格顏色-定位到下一個單元格”這個動作。再將這個設置一打開excel就自動自定義快捷鍵,即設置爲工作簿事件。
解決
以記錄s類型爲例
1、編寫vba代碼,名稱爲spro
Subspro()
ActiveCell.Value ="s"
ActiveCell.Interior.Color =RGB(255,0,0)
ActiveCell.Offset(1,0).Activate
EndSub
2、爲這個VBA代碼自定義一個快捷鍵s,即按下鍵盤s鍵,執行上述spro的vba代碼。
PrivateSubWorkbook_Open()
Application.OnKey"s","spro"
EndSub
注意,這個代碼要放在Thisworkbook當中,因爲是工作簿事件。
效果(鍵盤按s)
同理可以爲d,f兩個類別分別進行設置,最終的效果(鍵盤只按s,d,f三個鍵):
說明
OnKey方法的作用是當某個特定按鍵或者組合按鍵被用戶按下時,運行指定的過程。類似在windows系統中,按下“Ctrl+C”組合按鍵,就可以將所選擇的內容複製到粘貼板,其實這就是當特定的組合按鍵(“Ctrl+C”)被按下時,運行指定的過程(將所選擇的內容複製到粘貼板 )。
基本的語法是:
Application.OnKey(Key, Procedure)
翻譯成人話就是:
Application.OnKey(某個按鍵(組合), 某個程序)
Key 參數可由一個或多個字符表示,比如 "a" 表示字符a,"{ENTER}" 表示 Enter。
若要指定按對應的鍵(例如 Enter 或 Tab)時的非顯示字符,可以使用下表所列出的代碼。表中的每個代碼表示鍵盤上的一個對應鍵。
如果需要使用組合鍵,比如"shift+V",則表示爲"+V";"Ctrl+V",則表示爲"^V"。
感興趣的可以在公號內回覆「自定義」自取試用,儘快哈~~
如果覺得實用,點個“在看”並分享給更多的朋友吧!
你可能還會想看:
Excel VBA 實例(30) - 爲多個sheets創建目錄和超鏈接
Excel VBA 實例(29) - 快速實現合併單元格的填充
歡迎交流!