我们可以使用 Application 对象的 SendKeys 方法来模拟键盘输入,将击键发送至活动应用程序。特别要注意的是,将击键发送至活动应用程序,例如:本来程序要求是在 Excel 工作界面下执行宏,但是你在 VBE 界面下执行宏,按键将在 VBE 界面下操作,可能宏就不起作用了。
SendKeys 方法语法
Application.SendKeys (Keys, Wait)
Keys 参数可指定任何单个键或与 Alt、Ctrl 或 Shift 的组合键(或者这些键的组合)。 每个键均可用一个或多个字符表示,例如,"b
" 表示字符 b,"{DELETE}
" 表示 Delete 键。
若要指定按相应键时未显示的字符, (例如:Enter 或 Tab) ,请使用下表中列出的代码。 表中的每个代码表示键盘上的一个键。
按键 | 代码 |
---|---|
Backspace | {BACKSPACE} 或 {BS} |
Break | {BREAK} |
Caps Lock | {CAPSLOCK} |
Clear | {CLEAR} |
Delete 或 Del | {DELETE} 或 {DEL} |
End | {END} |
Enter(数字小键盘) | {ENTER} |
Enter | ~ (波形符) |
Esc | {ESCAPE} 或 {ESC} |
Help | {HELP} |
Home | {HOME} |
Ins | {INSERT} |
Num Lock | {NUMLOCK} |
Page Down | {PGDN} |
Page Up | {PGUP} |
Return | {RETURN} |
Scroll Lock | {SCROLLLOCK} |
Tab | {TAB} |
F1 到 F15 | {F1} 到 {F15} |
向上键 | {UP} |
向下键 | {DOWN} |
向左键 | {LEFT} |
向右键 | {RIGHT} |
还可以组合 Shift,Ctrl,Alt 指定键。 要指定与其他键组合使用的键,请使用下表。
要组合的键 | 在键代码之前添加 |
---|---|
Shift | + (加号) |
Ctrl | ^ (插入符号) |
Alt | % (百分号) |
若为特定字符指定处理过程(如 +
、^
、%
、~
等等),可将此字符用大括号 {}
括起来。例如要指定加号,可以用 {+}
表示。
如果要指定重复键,可以使用 {key number}
的形式,必须在 key 与 number 之间放置一个半角空格。例如: {1 5}
指按 5 次数字 1 键。
参数 Wait 可选,若该值为 True,则 Microsoft Excel 等待击键处理完后再将控制返回给宏。如果该值为 False(或省略),则宏继续执行而不等待击键处理完毕。
SendKeys 方法将击键放到键盘缓冲区。某些情况下,在调用要使用击键的方法之前必须先调用此方法。例如,若要往对话框中发送密码,则必须在显示对话框之前调用 SendKeys 方法。
示例
以下示例在显示另存为对话框之前先调用 SendKeys 方法:
Sub SaveAsFilename()
Application.SendKeys "OACourse.xlsm"
Application.Dialogs(xlDialogSaveAs).Show
End Sub
以下示例创建新的工作簿:
Application.SendKeys ("^n")
以下示例打开 Excel “名称管理器”:
Application.SendKeys ("%mn")
以下示例将值 1234 输入到了“活动单元格”中。
Application.SendKeys ("1234{Enter}")
以下示例选择单元格 A1 中的最后5个字符:
Sub SelectSpecialChar()
Range("A1").Select
Application.SendKeys "{F2}+{Left 5}"
End Sub
以下示例将激活【开发工具】选项卡(如果开发工具选项卡当前不处于活动状态则激活它,要测试此宏,请不要激活开发工具选项卡,而是使用 Alt+F8 选择运行 ShowDevTools
宏。):
Sub ShowDevTools()
If Not Application.ShowDevTools Then
Application.ShowDevTools = True
End If
Application.SendKeys "/las%V~"
End Sub