EXCEL圖文教程:VBA條件語句入門級教程
編按:關于宏,條件語句是最常用的語句之一,條件語句是根據(jù)判斷結果執(zhí)行不同的過程,也就是“如果是……就進行……”。只有掌握了宏程序的條件語句,才能應用起來得心應手。這篇文章的目的,是介紹條件語句,其實條件語句只有兩種:“IF…Then…Else”語句,“Slecct…Case”語句。
?
一、IF…Then…Else語句
1、語句介紹
到目前為止所學習過的宏都是從“Sub…”的下一行開始順序執(zhí)行,并以“End Sub…”作為結束的單向處理。對此,如果能根據(jù)不同的條件來改變流程,宏的可應用的范圍就會大大擴展。在此就來學學“If…Then…Else”語句吧。該語句的語法結構是:
If?條件表達式?Then
條件滿足時所執(zhí)行的處理
Else
????條件不滿足時所執(zhí)行的處理
End If
語法中,在If后放入條件,如果條件滿足就執(zhí)行Then后面的部分,如果不滿足就執(zhí)行Else后面的部分。其中,“Else?條件不滿足時所執(zhí)行的處理”的部分如果沒有必要可將其省略,此時,只有在條件滿足時進行的處理,條件不滿足則不進行處理。
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(行號,列標),“行號”參數(shù)表示縱向的位置,“列標”參數(shù)表示橫向的位置,例如,Cells(1,2)的行號為1,列標為2,因此表示B1單元格。然后用“For…Next”循環(huán)語句從第二行到第14行檢查Cells(y,1)的值,如果該值為"",然后就執(zhí)行”Cells(y, 1).Value = "無任何值"”,也就是輸入“無任何值”,再執(zhí)行“Cells(y, 1).Interior.ColorIndex = 6”,也就是將單元格填充黃色。當單元格有數(shù)據(jù)時,也就是非“Cells(y, 1).Value = ""”時,不做處理,換句話不設置“Else”語句。
?

?
例2:對于第一行的第1-10列兩個單元格做判斷,如果單元格值為空,則在相應的第二列單元格輸出“無數(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、概念介紹
在武俠世界中,有北喬峰和南慕容勢均力敵、旗鼓相當。在VBA世界里,也有與“IF…Then…Else”齊名的條件語句“Select… Case”語句。假如遇到這樣的條件:“如果是1就進行A,如果是2就進行B,如果是3就進行C……”,也就是處理好多情況的時候,應用“Select…Case”語句就能編出簡明、易懂的宏語言。當然了,應用“IF…Then…Else”語句也能做到,但處理多個條件,“Select…Case語句”更加方便。該語句的語法結構是:
Select Case?表達式
Case?條件1
處理1
Case?條件2
處理2
……
Case Else
其他處理
End Select
語法中,在Select Case后面放置表達式部分,并按此表達式進行分別處理。如果與所有條件都不符合,就會執(zhí)行Case Else中的處理,而且,Case的分支無數(shù)量限制。
2、舉個例子
例1:?“A1:A10單元格”區(qū)域的值如果為70以上就填充藍色,如果為50以上就填充黃色,其他的都填充紅色。

程序代碼:
Sub?按數(shù)字大小填充紅黃藍色()
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”,就行填充藍色,同理,如果為50以上就填充黃色,至于其他的,就執(zhí)行“Cells(y, 1).Interior.ColorIndex = 3”,就填充紅色。
例2:2022年春夏秋冬分別為春季為3、4、5月份,夏季為6、7、8月份,秋季為9、10、11月份,冬季為12、1、2月份,我們可以通過不同月份判定當前是屬于哪個季節(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ù)獲取當前的時間節(jié)點,接著用Month()函數(shù)獲取月份,然后用Select Case語句判斷不同的月份,最后用MsgBox彈出一個對話框,對話框內是代表當前季節(jié)的古詩。
?
?
做Excel高手,快速提升工作效率,部落窩教育《一周Excel直通車》視頻和《Excel極速貫通班》直播課全心為你!
Excel

相關推薦:
將excel中的數(shù)據(jù)按照指定數(shù)量進行重復,非得用VBA才能實現(xiàn)嗎?
如何在特定位置批量插入空行等12種實用辦公技巧
4種刪除excel重復值的小妙招,速收藏
Power Query的數(shù)據(jù)替換技巧比Excel函數(shù)更萬能!
版權申明:
本文作者賦春風;同時部落窩教育享有專有使用權。若需轉載請聯(lián)系部落窩教育。