- Office VBA開發(fā)經(jīng)典:中級(jí)進(jìn)階卷
- 劉永富 劉行
- 703字
- 2019-11-22 18:29:08
2.7 自動(dòng)關(guān)閉的對(duì)話框
VBA中的MsgBox對(duì)話框主要有兩個(gè)作用,一個(gè)是在對(duì)話框中彈出運(yùn)行結(jié)果,用于告知執(zhí)行程序的人員;另一個(gè)作用是對(duì)話框中具有“是”“否”“取消”等可選按鈕,讓用戶抉擇。
但是Msgbox對(duì)話框一旦彈出來(lái),用戶必須與之交互,手工把對(duì)話框關(guān)掉方可執(zhí)行后續(xù)的程序代碼。
在很多情況下,需要用到MsgBox對(duì)話框的效果,如果能夠在一定時(shí)間范圍內(nèi)自動(dòng)關(guān)閉,就更為理想了。
WshShell的Popup方法可以彈出一個(gè)對(duì)話框,理論上可以在設(shè)定的秒數(shù)之后自動(dòng)關(guān)閉,但在實(shí)際運(yùn)用中經(jīng)常不能自動(dòng)關(guān)閉。
因此,更推薦使用API函數(shù)來(lái)設(shè)計(jì)自動(dòng)關(guān)閉的對(duì)話框。MsgBoxTimeout的完整聲明如下。

參數(shù)說(shuō)明如下。
hwnd:對(duì)話框依附的窗口對(duì)象的句柄值。
lpText:對(duì)話框中顯示的內(nèi)容。
lpCaption:對(duì)話框的標(biāo)題。
wType:對(duì)話框顯示的按鈕、圖標(biāo)風(fēng)格的組合值。
wlange:函數(shù)擴(kuò)展。
dwTimeout:對(duì)話框持續(xù)的最長(zhǎng)毫秒數(shù)。
MsgBoxTimeout對(duì)話框彈出來(lái)后,如果用戶主動(dòng)單擊對(duì)話框中的按鈕,則對(duì)話框在設(shè)定時(shí)間之前就提前關(guān)閉,此時(shí)該函數(shù)返回的整型值與用戶所選按鈕相關(guān),若置之不理,則對(duì)話框在規(guī)定時(shí)間過(guò)后自動(dòng)關(guān)閉,自動(dòng)關(guān)閉了的對(duì)話框,其返回值為32000。
下面的程序在對(duì)話框中依次彈出一些判斷題,用戶可以選擇“是”或“否”進(jìn)行作答,如果沒(méi)來(lái)得及單擊按鈕,則對(duì)話框在10秒后自動(dòng)彈出下一道題。
程序代碼如下。

代碼分析:hwnd:=0表示該對(duì)話框的宿主窗口是計(jì)算機(jī)的屏幕(屏幕的句柄是0),如果設(shè)置為hwnd:=Application.hwnd,則對(duì)話框的宿主是Excel應(yīng)用程序,那么在對(duì)話框存續(xù)期間用戶不能對(duì)工作表和單元格進(jìn)行任何操作,有點(diǎn)類似模態(tài)窗體。
運(yùn)行上述程序,彈出的對(duì)話框依次顯示單元格中的每道題,如果用戶動(dòng)作慢沒(méi)有來(lái)得及選擇,則在B列標(biāo)記為“未做”,如圖2-46所示。

圖2-46 指定時(shí)間范圍內(nèi)自動(dòng)關(guān)閉的對(duì)話框
以上程序的源代碼文件為“自動(dòng)關(guān)閉的對(duì)話框.xlsm”。
- The Android Game Developer's Handbook
- JavaScript 網(wǎng)頁(yè)編程從入門到精通 (清華社"視頻大講堂"大系·網(wǎng)絡(luò)開發(fā)視頻大講堂)
- AngularJS深度剖析與最佳實(shí)踐
- Mastering Rust
- SQL Server 2012數(shù)據(jù)庫(kù)管理與開發(fā)項(xiàng)目教程
- 程序員修煉之道:通向務(wù)實(shí)的最高境界(第2版)
- Odoo 10 Implementation Cookbook
- Modern C++ Programming Cookbook
- ASP.NET求職寶典
- 分布式架構(gòu)原理與實(shí)踐
- CryENGINE Game Programming with C++,C#,and Lua
- Hands-On Machine Learning with ML.NET
- Data Visualization:Representing Information on Modern Web
- 計(jì)算機(jī)視覺(jué)增強(qiáng)現(xiàn)實(shí)應(yīng)用程序開發(fā)
- Intelligent Document Capture with Ephesoft(Second Edition)