EXCEL VBA sendkeys语句问题

2024-11-10 10:29:53
推荐回答(3个)
回答(1):

为什么要TAB呢,直接Y或N不就行了吗:

Sub 退出()
  Application.Quit
  Application.SendKeys "Y"
End Sub

或:

Sub 退出()
  Application.Quit
  Application.SendKeys "N"
End Sub

 我对你的代码注释如下

Application.SendKeys ("{tab}")'先按TAB无效,这一句其实没有作用
Application.Quit'选择关闭
Application.SendKeys ("{enter}")'按回车键确认,注意这是默认停留在Y上,也就是处于回车保存状态。

以下代码也测试通过:

Sub 退出()
  Application.Quit
  Application.SendKeys "{TAB}"
  Application.SendKeys "{ENTER}"
End Sub

回答(2):

sendkeys 有2个参数的,第2个参数为TRUE,则 Microsoft Excel 等待击键处理完后再将控制返回到宏
那么你写成
Application.Quit
Application.SendKeys "{tab}",TRUE
Application.SendKeys "{enter}",TRUE

这样应该行了,MSDN说,向对话框发送按键时,需要先调用SENDKEYS...,我在做试验时,你上写的2种方法都可以正常退出..没看出区别,可能是我们的EXCEL版本不一样

回答(3):

看微软的帮助文件中有说明:
http://msdn.microsoft.com/zh-cn/library/office/ff821075

本方法将击键放到键盘缓冲区。某些情况下,在调用要使用击键的方法之前必须先调用此方法。例如,若要往对话框中发送密码,则必须在显示对话框之前调用 SendKeys 方法

Application.Quit也是属于其中一种情形。