加速VisualBasicForApplication(VBA)
2019-11-18 17:52:48
供稿:網(wǎng)友
如今的CPU的發(fā)展是越來越快,從386、486到今天的Pentium、PentiumⅡ,發(fā)展速度可謂快矣。然而,在CPU高速發(fā)展的同時(shí),應(yīng)用軟件的“體重”也隨之猛漲,從我學(xué)電腦時(shí)的幾K、幾十K,到今天的幾十兆、幾百兆,這變化連我自己都感到吃驚。CPU的進(jìn)步,使人們工作更加快速,效率大增,同時(shí)也養(yǎng)成了人們“不求簡(jiǎn)”的不良習(xí)慣。筆者曾見過一位朋友正在編寫一段程序,用的是VBA,程序代碼如下:
WithActiveWindow
IfWindowState=wdWindowStateMaximizeThen'thisisthefirstpart!
MsgBox"ThisisaMaximizeWindow"
EndIf
IfWindowState=wdWindowStateMinimizeThen'thisisthesecondpart!
MsgBox"HereisaMinimizeWindow"
EndIf
IfWindowState=wdWindowStateNormalThen'thisisthethirdpart!
MsgBox"Nowhere,isaNormalWindow!"
EndIf
EndWith
乍看一下,似乎結(jié)構(gòu)還挺漂亮,是個(gè)好程序。但細(xì)分析一下,你會(huì)發(fā)現(xiàn),這段程序是個(gè)敗筆。因?yàn)檫@三段程序沒有實(shí)現(xiàn)應(yīng)該具有的邏輯結(jié)構(gòu)。我將這個(gè)意見告訴了這位朋友,他到很能聽進(jìn)話,馬上修改了上述程序,具體程序代碼如下:WithActiveWindow
IfWindowState=wdWindowStateMaximizeThen'thisisthefirstpart!
MsgBox"ThisisaMaximizeWindow"
ElseIfWindowState=wdWindowStateMinimizeThen'thisisthesecondpart!
MsgBox"HereisaMinimizeWindow"
ElseIfWindowState=wdWindowStateNormalThen'thisisthethirdpart!
MsgBox"Nowhere,isaNormalWindow!"
EndIf
Endwith
我的那位朋友寫完這段程序后,沖我笑笑,意思說:“怎麼樣?”我看了看這段程序,心想:如果WindowState不等于wdWindowStateMaximize的話,則要在判斷WindowState是否等于wdWindowStateMinimize,如果還不等于的話呢?則要繼續(xù)判斷是否等于wdWindowStateNormal,這樣下來,要闖三個(gè)“家門”方可進(jìn)對(duì),累不累啊?我看著不耐煩了,自己親自編了一段程序:
SelectCaseWindowState
CasewdWindowStateMaximize'thisisthefirstpart!
MsgBox"ThisisaMaximizeWindow"
CasewdWindowStateMinimize'thisisthesecondpart!
MsgBox"HereisaMinimizeWindow"
CasewdWindowStateNormal'thisisthethirdpart!
MsgBox"Nowhere,isaNormalWindow!"
EndSelect
正如你所看到的,這段程序簡(jiǎn)練、易懂、可讀性強(qiáng),相信會(huì)為程序增色不少。而且如果調(diào)試起來,你會(huì)發(fā)現(xiàn)它的其他優(yōu)點(diǎn)。難怪朋友恍然大悟呢!
其實(shí),使用哪種判斷語句,也是有章可循的。比如:如果有兩種可能性,那麼可毫不猶豫地選擇If/Elseif;對(duì)于兩種或兩種以上的可能性,最好選擇SelectCase/EndSelect。多數(shù)情況下,如果只有一種唯一選擇性的關(guān)系,那麼,"ifthen/endif"將是最佳選擇。->