九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
什么是IF分支語句?
NO.105-什么是IF分支語句
作者:看見星光
 微博:EXCELers / 知識星球:Excel

哈羅,大家好,我是星光。話說程序結(jié)構(gòu)有三要素:順序、分支和循環(huán)。'順序'咱們前面章節(jié)講過了,'循環(huán)'下下章咱們會講,'分支'的實現(xiàn)在VBA中主要依靠IF語句……是的,今天就來給大家詳細(xì)聊下IF,聊下它的基本概念、'與'和'或'關(guān)系的實現(xiàn)、同IIF函數(shù)的區(qū)別、小細(xì)節(jié)處理等等。



1
基礎(chǔ)語法


在VBA中IF語句有兩種結(jié)構(gòu)形式,一種是單行形式,一種是'塊'形式。

先說單行形式。語法如下:

If 條件表達(dá)式 Then 真結(jié)果 [Else 假結(jié)果]

翻譯成漢語就是:

如果 條件表達(dá)式 那么 條件成立的結(jié)果 [否則 條件不成立的結(jié)果]

中括號[]包起來的Else部分是可以省略的。

我舉個例子。

Sub test1()    Dim strTemp As String    If 2 > 1 Then strTemp = '我愛你' Else strTemp = '我不愛你'    MsgBox strTemp    If Range('A1') = 'VBA' Then MsgBox '我愛VBA'    If VBA.IsNumeric(996) Then MsgBox '恭喜發(fā)財,紅包拿來!'End Sub

第3行代碼使用If語句判斷2是否大于1(2>1),如果表達(dá)式成立,則賦值變量strTemp為字符串我愛你,否則賦值變量為字符串我不愛你——臉紅一下。

第5行代碼使用If語句判斷當(dāng)前工作表A1單元格的值是否等于'VBA',如果條件成立,則彈出對話框顯示內(nèi)容'我愛VBA'。很明顯,這句代碼省略了Else部分,意思是當(dāng)條件不成立時,忽略不管,繼續(xù)運行下一行代碼。

第6行代碼使用If語句判斷996是不是數(shù)值,如果為真,則彈出對話框顯示內(nèi)容'恭喜發(fā)財,紅包拿來!'。

……

然后再說下塊形式。

語法結(jié)構(gòu)如下。

If 條件表達(dá)式 Then [表達(dá)式成立時執(zhí)行的結(jié)果][Else 表達(dá)式不成立時執(zhí)行的結(jié)果]End If

還是舉個例子。

Sub test2()    If 2 > 1 Then        MsgBox '我愛你'    Else        MsgBox '我不愛你'    End IfEnd Sub

以上代碼判斷2是否大于1,如果條件成立,彈窗顯示內(nèi)容'我愛你',否則彈窗顯示內(nèi)容'我不愛你'。

同樣,從語法上來說Else部分也是可以省略的。

Sub test3() If 2 > 1 Then MsgBox '我愛你' End IfEnd Sub

……

對比IF語句這兩種結(jié)構(gòu)形式,區(qū)別在于,單行形式代碼只有一行,塊形式有多行(這是一句廢話?)……

打個響指,認(rèn)真臉,兩者很重要的區(qū)別是塊形式多了條End If語句,而且這條語句是不能省略的,不能省略的,不能省略的……重要的話說三遍,畢竟缺失End If語句是新手最容易犯的錯誤之一。



2
多層關(guān)系判斷


在實際If語句使用過程中,我們更普遍使用塊形式的If語句,這是由于相比于單行形式,塊形式更加靈活,能夠容納更多的表達(dá)式,代碼結(jié)構(gòu)更加清晰,更有利于代碼的編寫和閱讀(潛臺詞:如果你覺得記兩種形式比較麻煩,可以暫時忘記單行形式)。

舉個例子。

大朋友們小朋友們都知道,學(xué)生成績大于等于60分及格,大于等于80分良好……如果按照這個規(guī)則,使用If語句判斷A1單元格成績的評級結(jié)果,代碼如下所示。

Sub test4()    Dim 得分 As Double    If 得分 >= 80 Then        MsgBox '良好'    ElseIf 得分 >= 60 Then        MsgBox '及格'    Else        MsgBox '不及格'    End IfEnd Sub

第5行代碼使用ElseIf...Then語句判斷得分是否大于等于60分。

在IF語句中,我們可以使用任意多個ElseIf語句增加判斷的條件。

完整語法結(jié)構(gòu)如下。

If 條件表達(dá)式 Then [表達(dá)式成立時執(zhí)行的結(jié)果][ElseIf 條件表達(dá)式 Then ElseIf 表達(dá)式成立時執(zhí)行的結(jié)果][Else 所有條件都不滿足時執(zhí)行的結(jié)果]End If

中括號部分都是可以省略的。

看個廣告放松一下
畢竟沒有廣告的公眾號推文是不真誠的..▼


3
'與'和'或'關(guān)系判斷


什么是'與'關(guān)系?

'與'關(guān)系在Excel中又被稱為'并且'關(guān)系,意思是多個條件同時全部成立,結(jié)果方才為真。

比如說,你的電腦有三個盤,分別是C盤、D盤和G盤?,F(xiàn)在殺毒,C盤沒有毒,D盤沒有毒,G盤也沒有毒,三個的條件都成立,OK,我們可以得出結(jié)論你的電腦沒中毒,你是個老實人。但倘若其中任意一個盤有毒,那你就不能說自己電腦沒中毒了,看我小眼神,對不對?

         
這就是一種典型的'與'關(guān)系問題。

……

什么是'或'關(guān)系?

'或'關(guān)系剛好和'與'關(guān)系唱反調(diào),'與'關(guān)系認(rèn)為所有的條件都成立,才算對。'或'關(guān)系不這么認(rèn)為,它覺得做人要大度,有一個條件成立就OK了,只有所有條件都不成立時,才算錯。

如果'與'和'或'去談戀愛,他們的愛情觀大概是這樣的。'與'覺得愛情像眼睛,容不下一粒沙子,有一粒沙子咱們就拜拜吧。'或'覺得愛情像沙子,抓的越緊,漏的越多,所以能抓住一個條件就行了——說實話,你喜歡?什么樣的人——你又是什么樣的人?

……

在VBA中,'與'關(guān)系使用邏輯運算符And表示。語法結(jié)構(gòu)如下(注意和工作表函數(shù)AND的區(qū)別)

And語法..▼
表達(dá)式1 And 表達(dá)式2 [And 表達(dá)式3……]

示例代碼..▼
Sub test5() If 2 > 1 And 3 > 2 Then MsgBox '第一次,你說的對。' '兩個表達(dá)式都成立,結(jié)果返回True Else MsgBox '第一次,你說的不對。' End If '---------------------- If 2 > 1 And 3 > 4 Then MsgBox '第二次,你說的對。' Else MsgBox '第二次,你說的不對。' '兩個表達(dá)式?jīng)]有都成立,結(jié)果返回False End IfEnd Sub

'或'關(guān)系使用邏輯運算符Or表示,語法結(jié)構(gòu)如下。

OR語法..▼
表達(dá)式1 Or 表達(dá)式2

示例代碼..▼
Sub test6() If 2 > 1 Or 3 > 4 Then MsgBox '第一次,你說的對。' '兩個表達(dá)式至少一個成立,結(jié)果返回True Else MsgBox '第一次,你說的不對。' End If '---------------------- If 2 > 3 And 3 > 4 Then MsgBox '第二次,你說的對。' Else MsgBox '第二次,你說的不對。' '兩個表達(dá)式都沒有成立,結(jié)果返回False End IfEnd Sub


4
細(xì)節(jié)與效率


……

先說一聲:如果你是初學(xué)者,這節(jié)內(nèi)容了解就好,看過就算了。


……

上一節(jié)咱們講了,'與'關(guān)系使用邏輯運算符And。

但從效率來講,這并不是最優(yōu)選擇。這是由于And語句是將每個條件表達(dá)式均計算出結(jié)果后,才能得出最終的結(jié)果。

舉個例子。

Sub test7()    If 2 > 1 And 3 > 2 And 4 > 3 Then        MsgBox '你說的對。'    End IfEnd Sub

第2行代碼使用了And運算符計算'與'關(guān)系,它需要將2>1、3>2、4>3三個表達(dá)式均計算完成后,才得出最終真或假的結(jié)果。

Sub test8() If 2 > 1 Then If 3 > 2 Then If 4 > 3 Then MsgBox '你說的對。' End If End If End IfEnd Sub


上述代碼使用了嵌套IF語句,同樣表達(dá)了3個條件的'與'關(guān)系,先判斷是否符合條件1,條件1成立的情況下,再判斷是否符合條件2,條件2成立的情況下,再判斷條件3,如果條件3成立,則返回一個結(jié)果……

這就建立了一個具有層次的篩選機(jī)制,這樣做有什么好處呢?——大大減少了篩選的次數(shù)啊。本來你不管三七二十一,啥情況都需要一次篩選三個表達(dá)式,現(xiàn)在呢?假設(shè)表達(dá)式1未成立,你就不用再篩選另外兩個表達(dá)式了不是?

因此使用這種方式也可以實現(xiàn)'與'關(guān)系的條件判斷,且效率更高。不過需要說明兩個細(xì)節(jié),一個是您應(yīng)該根據(jù)條件成立的占比情況,安排先后判斷層次;另外一個是需要注意End If語句的配套,避免出現(xiàn)'塊 If 沒有 End If'的情況。

同樣的道理,'或'關(guān)系可以使用多層ElseIf語句來實現(xiàn)。

Or語句..▼

Sub test9()    If 2 > 1 Or 3 < 2 Or 4 < 3 Then        MsgBox '你說的對。'    End IfEnd Sub

使用多層ElseIf語句代替..▼
Sub test10() If 2 > 1 Then MsgBox '你說的對。' ElseIf 3 < 2 Then MsgBox '你說的對。' ElseIf 4 < 3 Then MsgBox '你說的對。' End IfEnd Sub

當(dāng)你敲代碼熟練了,對邏輯表達(dá)式的真假思維習(xí)以為常了,你老婆讓你出門買10個包子看見賣西瓜的就買2個,你會板著臉反復(fù)確認(rèn)到底買幾個包子——的時候,上述代碼可以使用以下代碼代替,以避免相同語句或過程反復(fù)編寫造成代碼冗余的問題。

Sub test11()    Dim b As Boolean    b = False    If 2 > 1 Then        b = True    ElseIf 3 < 2 Then        b = True    ElseIf 4 < 3 Then        b = True    End If    If b Then '判斷上述3個條件是否有任何一個成立        MsgBox '你說的對'    Else        MsgBox '你說的不對。'    End IfEnd Sub

……


5
IIF函數(shù)



在VBA有一個類似工作表函數(shù)IF的函數(shù),叫做IIF,也可以起到條件判斷的作用。語法格式如下。


IIF(條件表達(dá)式,真結(jié)果,假結(jié)果)

第1參數(shù)是條件表達(dá)式,當(dāng)表達(dá)式為True時,返回第2參數(shù)的值,為False時返回第3參數(shù)的值,既不是True也不是False時,系統(tǒng)會提示'類型不匹配'。


三個參數(shù)均是必選的,不能省略。另外,不管第1參數(shù)返回的結(jié)果是True還是False,系統(tǒng)都會對第2和第3參數(shù)執(zhí)行運算(當(dāng)然,未必顯示運算結(jié)果),所以這個函數(shù)既不是效率最優(yōu),也不是運算最穩(wěn)定,只是勝在代碼簡潔。

舉個例子。
Sub test12()    Dim s As Variant    s = IIf(2 > 1, '你說的對', 3 / 0)    MsgBox sEnd Sub

第3行代碼使用IIf函數(shù)判斷2是否大于1(2>1),條件成立返回字符串'你說的對',否則返回3/0。

代碼運行后系統(tǒng)會彈出以下警告信息。

這是由于不管2>1的結(jié)果是否為True,系統(tǒng)都會運算IIF的第3參數(shù)3/0,進(jìn)而觸發(fā)除數(shù)不能為零的錯誤。

……

而根據(jù)條件表達(dá)式的真假結(jié)果,選擇性運算的IF語句則沒有這方面的困擾——因此通常更推薦大家使用If語句,而不是IIF函數(shù)。
Sub test13() Dim s As Variant If 2 > 1 Then s = '你說的對。' Else s = 3 / 0 End If MsgBox sEnd Sub
……
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
VBA的IIf和If區(qū)別與用法
宏和VBA簡易入門:05-流程控制入門-B
別怕,VBA入門級教程來了,條件語句很簡單!
計算機(jī)技術(shù)基礎(chǔ)(第五章 選擇結(jié)構(gòu)程序設(shè)計 )
VBA入門12:IF語句
學(xué)習(xí)VBA,報表做到飛 第一章 入門篇 1.7 IF語句
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服