該方法用于按特定鍵或特定的組合鍵時運(yùn)行指定的過程。
Sub OnKey(key1 As VARIANT,
[key2 As VARIANT],
[key3 As VARIANT],
[key4 As VARIANT],
[Procedure As VARIANT])
參數(shù)說明
- key1
-
String 類型,必需。表示要按的鍵的字符串。
- key2
-
String 類型,可選。表示要按的鍵的字符串。
- key3
-
String 類型,可選。表示要按的鍵的字符串。
- key4
-
String 類型,可選。表示要按的鍵的字符串。
- Procedure
-
Variant 類型,可選。表示要運(yùn)行的過程名稱。
說明
以下列表列出代碼和對應(yīng)的鍵。
值 |
描述 |
{BACKSPACE} or {BS} |
Backspace |
{BREAK} |
Break |
{CAPSLOCK} |
Caps Lock |
{CLEAR} |
Clear |
{DELETE} 或 {DEL} |
Delete 或 Del |
{END} |
End |
{ENTER} |
Enter(數(shù)字小鍵盤) |
{ESCAPE} 或 {ESC} |
Esc |
{F1} 到 {F15} |
F1 到 F15 |
{HELP} |
Help |
{HOME} |
Home |
{INSERT} |
Ins |
{NUMLOCK} |
Num Lock |
{PGDN} |
Page Down |
{PGUP} |
Page Up |
{RETURN} |
Return |
{SCROLLLOCK} |
Scroll Lock |
{TAB} |
Tab |
{UP} |
向上鍵 |
{DOWN} |
向下鍵 |
{RIGHT} |
向右鍵 |
{LEFT} |
向左鍵 |
還可以指定與Shift和/或Ctrl和/或Alt組合使用的鍵。若要指定與其他鍵組合使用的鍵,可使用下表3。
表3:組合按鍵代碼
要組合的鍵 |
在按鍵代碼之前添加 |
Shift |
+(加號) |
Ctrl |
^(插入符號) |
Alt |
%(百分號) |
Application.OnKey "^{+}", "InsertProc"
Application.OnKey "+^{RIGHT}", "SpecialPrintProc"
下面的示例將Shift+Ctrl+向右鍵恢復(fù)正常操作。
Application.OnKey "+^{RIGHT}"
下面的示例將Shift+Ctrl+向右鍵鍵序列設(shè)為不發(fā)生任何操作。
Application.OnKey "+^{RIGHT}", ""
又如,下面的代碼忽略Alt+F4組合鍵的操作:
Application.OnKey "%{F4}",""
即按下Alt+F4組合鍵后,Excel沒有任何反應(yīng),不執(zhí)行任何操作。
注意,OnKey方法使用的按鍵將應(yīng)用到所有打開的工作簿,且僅在當(dāng)前的Excel會話期間起作用。
下面的示例代碼禁用工作表右鍵快捷菜單:
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, _
ByVal Target As Range, Cancel As Boolean)
Cancel = True
MsgBox "對不起!已禁用右鍵菜單!"
End Sub
'禁用Shift+{F10}顯示快捷菜單
Sub SetupNoShiftF10()
Application.OnKey "+{F10}", "NoShiftF10"
End Sub
'恢復(fù)Shift+F10組合鍵的功能
Sub TurnOffNoShiftF10()
Application.OnKey "+{F10}"
End Sub
若要為特定字符指定處理過程(如 +、^、% 等等),可以將此字符用花括號括起。
Private Sub Workbook_Open()
Application.OnKey "+^Q", "DF" 'CTRL+SHIFT+Q
Application.OnKey "+^E", "DFG" 'CTRL+SHIFT+E
Application.OnKey "%^S", "DFH" 'ALT+SHIFT+S
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnKey "+^Q"
Application.OnKey "+^E"
Application.OnKey "%^S"
End Sub
Sub DF()
MsgBox "12"
UserForm1.Show
End Sub
Sub DFG()
MsgBox "13"
UserForm1.Show
End Sub
Sub DFH()
MsgBox "14"
Unload UserForm1
End Sub