關(guān)鍵字:VBA 關(guān)于宏,條件語句是最常用的語句之一,條件語句是根據(jù)判斷結(jié)果執(zhí)行不同的過程,也就是“如果是……就進(jìn)行……”。只有掌握了宏程序的條件語句,才能應(yīng)用起來得心應(yīng)手。這篇文章的目的,是介紹條件語句,其實(shí)條件語句只有兩種:“IF…Then…Else”語句,“Slecct…Case”語句。 一、IF…Then…Else語句 1、語句介紹 到目前為止所學(xué)習(xí)過的宏都是從“Sub…”的下一行開始順序執(zhí)行,并以“End Sub…”作為結(jié)束的單向處理。對此,如果能根據(jù)不同的條件來改變流程,宏的可應(yīng)用的范圍就會大大擴(kuò)展。在此就來學(xué)學(xué)“If…Then…Else”語句吧。該語句的語法結(jié)構(gòu)是: If 條件表達(dá)式 Then 條件滿足時所執(zhí)行的處理 Else 條件不滿足時所執(zhí)行的處理 End If 語法中,在If后放入條件,如果條件滿足就執(zhí)行Then后面的部分,如果不滿足就執(zhí)行Else后面的部分。其中,“Else 條件不滿足時所執(zhí)行的處理”的部分如果沒有必要可將其省略,此時,只有在條件滿足時進(jìn)行的處理,條件不滿足則不進(jìn)行處理。 2、舉個例子 例1:下面的工作表,輸入的數(shù)據(jù)行與未輸入的數(shù)據(jù)行混在一起,要求在未輸入的行前(A列)輸入“無任何值”并填充黃色,而已輸入數(shù)據(jù)行保持原樣。 程序代碼: Sub 只輸入在空白單元格中() For y = 2 To 14 If Cells(y, 1).Value = "" Then Cells(y, 1).Value = "無任何值" Cells(y, 1).Interior.ColorIndex = 6 End If Next End Sub 程序分析:首先,Cells可以表示單元格,Cell表示方法為Cells(行號,列標(biāo)),“行號”參數(shù)表示縱向的位置,“列標(biāo)”參數(shù)表示橫向的位置,例如,Cells(1,2)的行號為1,列標(biāo)為2,因此表示B1單元格。然后用“For…Next”循環(huán)語句從第二行到第14行檢查Cells(y,1)的值,如果該值為"",然后就執(zhí)行”Cells(y, 1).Value = "無任何值"”,也就是輸入“無任何值”,再執(zhí)行“Cells(y, 1).Interior.ColorIndex = 6”,也就是將單元格填充黃色。當(dāng)單元格有數(shù)據(jù)時,也就是非“Cells(y, 1).Value = ""”時,不做處理,換句話不設(shè)置“Else”語句。 例2:對于第一行的第1-10列兩個單元格做判斷,如果單元格值為空,則在相應(yīng)的第二列單元格輸出“無數(shù)據(jù)”,否則輸出“有數(shù)據(jù)”。 程序代碼: Sub 判斷語句() Dim i As Integer For i = 1 To 10 If Cells(1, i) = "" Then Cells(2, i) = "無數(shù)據(jù)" Else Cells(2, i) = "有數(shù)據(jù)" End If Next End Sub 二、Select…Case語句 1、概念介紹 在武俠世界中,有北喬峰和南慕容勢均力敵、旗鼓相當(dāng)。在VBA世界里,也有與“IF…Then…Else”齊名的條件語句“Select… Case”語句。假如遇到這樣的條件:“如果是1就進(jìn)行A,如果是2就進(jìn)行B,如果是3就進(jìn)行C……”,也就是處理好多情況的時候,應(yīng)用“Select…Case”語句就能編出簡明、易懂的宏語言。當(dāng)然了,應(yīng)用“IF…Then…Else”語句也能做到,但處理多個條件,“Select…Case語句”更加方便。該語句的語法結(jié)構(gòu)是: Select Case 表達(dá)式 Case 條件1 處理1 Case 條件2 處理2 …… Case Else 其他處理 End Select 語法中,在Select Case后面放置表達(dá)式部分,并按此表達(dá)式進(jìn)行分別處理。如果與所有條件都不符合,就會執(zhí)行Case Else中的處理,而且,Case的分支無數(shù)量限制。 2、舉個例子 例1:“A1:A10單元格”區(qū)域的值如果為70以上就填充藍(lán)色,如果為50以上就填充黃色,其他的都填充紅色。 程序代碼: Sub 按數(shù)字大小填充紅黃藍(lán)色() For y = 1 To 10 Select Case Cells(y, 1).Value Case Is >= 70 Cells(y, 1).Interior.ColorIndex = 5 Case Is >= 50 Cells(y, 1).Interior.ColorIndex = 6 Case Else Cells(y, 1).Interior.ColorIndex = 3 End Select Next End Sub 程序分析:首先使用Cells表示單元格,然后用“For…Next”循環(huán)語句從第以行到第10行檢查Cells(y,1)的值,如果該值為70以上(這種類型的比較要使用Is來寫成“Is>=70” ),就執(zhí)行語句“Cells(y, 1).Interior.ColorIndex = 5”,就行填充藍(lán)色,同理,如果為50以上就填充黃色,至于其他的,就執(zhí)行“Cells(y, 1).Interior.ColorIndex = 3”,就填充紅色。 例2:2022年春夏秋冬分別為春季為3、4、5月份,夏季為6、7、8月份,秋季為9、10、11月份,冬季為12、1、2月份,我們可以通過不同月份判定當(dāng)前是屬于哪個季節(jié)。 程序代碼: Sub 判斷季節(jié)() Select Case Month(Now()) Case Is < 3 MsgBox ("隆冬到來時,百花亦已絕") Case Is < 6 MsgBox ("春眠不覺曉,處處聞啼鳥") Case Is < 9 MsgBox ("水積春塘晚,陰交夏木繁") Case Is < 12 MsgBox ("自古逢秋悲寂寥,我言秋日勝春朝") Case Else MsgBox ("隆冬到來時,百花亦已絕") End Select End Sub 程序分析:首先用NOW()函數(shù)獲取當(dāng)前的時間節(jié)點(diǎn),接著用Month()函數(shù)獲取月份,然后用Select Case語句判斷不同的月份,最后用MsgBox彈出一個對話框,對話框內(nèi)是代表當(dāng)前季節(jié)的古詩。 |
|