今天和大家說的是VBA代碼執(zhí)行的方式,舉個例子啊,我們的代碼執(zhí)行過程一般都是從SUB 開始,到end sub 結(jié)束,這個過程是順其自然的。但是在我們有些時候,并不需要他按照流程執(zhí)行,而是需要跳過某些語句進行執(zhí)行,或者判斷條件來執(zhí)行的語句,這個時候我們就需要使用控制代碼執(zhí)行的方式,具體的幾種控制執(zhí)行方式如下,我們會一一講解的。GOTO 語句 IF-Then 結(jié)構(gòu) Select Case 結(jié)構(gòu) For-next 結(jié)構(gòu) DO While 結(jié)構(gòu) Do Until 結(jié)構(gòu) GOTO 語句 這個語句是我們最常用的改變執(zhí)行過程的語句,這個語句就是可以將程序執(zhí)行的路徑轉(zhuǎn)移到我們指定的指令上面,但是需要注意的是,這個跳轉(zhuǎn)語句只能在一個子過程中間跳轉(zhuǎn),而不支持在模塊之間跳轉(zhuǎn)。舉個栗子,如下所示代碼: 在本輪中使用GOTO語句的作用是,當我們的等式成立的時候,就直接跳轉(zhuǎn)出來,顯示我們需要的結(jié)果,需要注意的是,我們GOTO后面接的是我們要跳轉(zhuǎn)的字符,我們需要跳轉(zhuǎn)的字符標簽位置需要增加冒號(文本必須要冒號,數(shù)字可以不需要冒號),這樣可以加快執(zhí)行的速度。 一般情況下,我們并不建議你使用GOTO語句,因為使用這個了,讓程序變得比較難看懂,在另外的情況下,比如跳過程序中間的錯誤值,我們可以使用GOTO語句。 IF-Then 結(jié)構(gòu) 在VBA代碼中最常見的判斷語句就是我們的IF-Then 結(jié)構(gòu),這個是非常重要的判斷語句,這個結(jié)構(gòu)我們用于單條件或者多條件判斷。舉個栗子,如下: 以上是單條件判斷語句,當我們的代碼只有一行的時候,可以不寫END IF。但是如果分成2行的話,就必須寫上,否則會報錯的,他們是一一對應(yīng)的。 我們現(xiàn)在看看一個if then多條件判斷結(jié)構(gòu),如下所示: 就是利用判斷語句,對我們的X值就行判斷,如果一旦符合就執(zhí)行完成此段代碼。 其實這個語句和我們的IF函數(shù)非常類似,當然VBA中間還有一個IIF函數(shù)的使用方法和IF函數(shù)的方式一樣,我們就不一一解釋了。 Select Case 結(jié)構(gòu) 當我們在多個選擇之間做出選擇的時候,我們就可以使用這個結(jié)構(gòu),就可以看到這個結(jié)構(gòu)是有多么的方便了。他和我們的IF THEN結(jié)構(gòu)可以相互替代,用法如下: 其實這個結(jié)構(gòu)我們非常好理解,需要注意的是每個Case語句的下方,可以寫很多的執(zhí)行代碼,當條件滿足的時候,我們的程序都會執(zhí)行。需要注意的一點是,為了既包括程序的執(zhí)行速度,我們需要將把最優(yōu)可能的情況,放置在最前面,這樣效率就能最大化。 For-next 結(jié)構(gòu) 這個循環(huán)也是我們最最常用的循環(huán)語句,是我們最好的一個循環(huán)語句。他的具體用法如下: 其實這個結(jié)構(gòu)是非常簡單的,需要把我們要執(zhí)行的代碼放置在中間即可,就相當于累計進行循環(huán)執(zhí)行。在使用這個結(jié)構(gòu)的時候,循環(huán)計數(shù)器就是我們的I,是一個變量的存在,需要你理解好這一點知識。當然我們可以控制循環(huán)執(zhí)行的次數(shù)或者要求,如下,我們需要求出1-100之間偶數(shù)的平方求和: 在這個子過程中,我們利用循環(huán)的步長,進行提取偶數(shù),然后進行平方求和累計,得到我們最后要的結(jié)果。當然我們在使用這個結(jié)構(gòu)的時候,我們可以使用Exit for提前退出循環(huán),如下所示: 另外需要說明的一點是,循環(huán)可以多次嵌套,支持多次使用。 DO While 結(jié)構(gòu) 這個結(jié)構(gòu)是VBA代碼給我們的另外一種循環(huán)的結(jié)果,與For Next循環(huán)不同的是,只有在滿足的情況下才會執(zhí)行程序。這個結(jié)構(gòu)有2個使用方法,如下圖所示的的用法: 以上的2個結(jié)構(gòu),不同之處就是第一個結(jié)構(gòu)有可能從來都不執(zhí)行循環(huán)的內(nèi)容,第二個語法,則是至少執(zhí)行一次循環(huán)的內(nèi)容。當然這個結(jié)構(gòu)也支持提前退出語句Exit Do,此時循環(huán)理解結(jié)束,將會退出循環(huán)。 Do Until 結(jié)構(gòu) 這個結(jié)構(gòu)和我們的DO While結(jié)構(gòu)是非常類似的,只有在我們條件滿足時候,他們執(zhí)行才會稍微有差異。在Do While的結(jié)構(gòu)中,我們循環(huán)的條件為真的時候就執(zhí)行循環(huán),而在Do Until結(jié)構(gòu)時候,一直執(zhí)行循環(huán),直至循環(huán)條件為真的時候。舉個例子,如下: Do Until的2種循環(huán)結(jié)構(gòu),我們只需要合理應(yīng)用即可。 需要說明的是VAB其實是一種結(jié)構(gòu)的語言,我們只需要按照他提供的標準進行編寫即可。另外我們需要從開始就建立好良好的模塊化代碼編寫結(jié)構(gòu),在以后的路上就知道作用非常之大。以上就是我們今天和大家說的代碼的中的控制代碼執(zhí)行的使用方法,其實VBA代碼學(xué)習(xí)起來非常簡單,他就是一個腳本語言的存在,他有自己的條條框框,你按照他的游戲規(guī)則來寫代碼就可以。如果有不明白的或者不懂的可以在下方留言,我們會一一解答的。 我是Excel教案,關(guān)注我持續(xù)分享更多的Excel技巧! |
|