對于一個工作薄,如果我要不保存并退出EXCEL,按照我們在工作薄界面的操作順序,應當是點擊右上角的“X”,EXCEL彈出對話框提示是否保存,這時我們按一下TAB鍵,選擇“否”,再按“ENTER”回車鍵,然后就完成了我所要求的操作,按順序反映在VBA中應當是:Application.QuitApplication.SendKeys ("{tab}")Application.SendKeys ("{enter}")可是我實際這樣寫的時候,只執行到Application.Quit,后面依然要求我手動操作,后來我改一了下順序,如下:Application.SendKeys ("{tab}")Application.QuitApplication.SendKeys ("{enter}")這樣就可以按我的要求完成操作,但我對這個順序不解,請高手解釋一下sendkeys
2 回答

絕地無雙
TA貢獻1946條經驗 獲得超4個贊
為什么要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 |

楊__羊羊
TA貢獻1943條經驗 獲得超7個贊
sendkeys 有2個參數的,第2個參數為TRUE,則 Microsoft Excel 等待擊鍵處理完后再將控制返回到宏
那么你寫成
Application.Quit
Application.SendKeys "{tab}",TRUE
Application.SendKeys "{enter}",TRUE
這樣應該行了,MSDN說,向對話框發送按鍵時,需要先調用SENDKEYS...,我在做試驗時,你上寫的2種方法都可以正常退出..沒看出區別,可能是我們的EXCEL版本不一樣
添加回答
舉報
0/150
提交
取消