Excel VBA之函數(shù)篇-3.1-iif函數(shù)

哈嘍小伙伴們,周末過(guò)得愉快嘛?反正我過(guò)的并不是很愉快,為什么呢?因?yàn)閺V州下雨了,大周末的居然下雨,哎,只能宅在家里了,聽說(shuō)還會(huì)降溫呢,不知道是真的還是假的,都快要4月天了,還是那么反常的天氣,哎。

之前我們已經(jīng)經(jīng)過(guò)了兩個(gè)系列的學(xué)習(xí),現(xiàn)在我們?nèi)缙诘倪M(jìn)入第三系列,之前也和大家介紹過(guò)了本系列主要是講述一些比較常用的VBA函數(shù),函數(shù)篇學(xué)起來(lái)相對(duì)有點(diǎn)枯燥,因?yàn)樗⒉荒軌蝰R上實(shí)現(xiàn)某種功能,但是大部分的功能都離不開各種函數(shù)的配合,同時(shí)一些VBA函數(shù)和excel函數(shù)也是通用的,學(xué)好函數(shù)作用還是很大的,好啦,我們進(jìn)入函數(shù)的第一篇,今天要介紹的就是IIF函數(shù)

看到這個(gè)IIF函數(shù),相信很多童鞋都會(huì)認(rèn)為是我打錯(cuò)字了,應(yīng)該是IF,然而并不是這樣的,在VBA中,確實(shí)是有IIF函數(shù)的,而它的功能和excel中的if函數(shù)的功能是相同的,可以簡(jiǎn)單的理解為,IIF就是原來(lái)excel的if,這樣應(yīng)該會(huì)更好理解,格式如下:

IIF("條件","Y","N")

如果條件成立,返回Y,如果不成立,返回N,是不是和excel的if是完全一樣的呢,好了,我們來(lái)看一個(gè)例子。我們綜合我們之前學(xué)習(xí)過(guò)的輸入框,通過(guò)輸入框和用戶之間進(jìn)行交互的,讓用戶輸入一個(gè)三位數(shù)的數(shù)字,如果用戶輸入的是三位數(shù),就返回YES,反之則返回NO。為了不斷得鞏固之前學(xué)習(xí)過(guò)得知識(shí),我們?cè)谥蟮美又校M量新舊知識(shí)點(diǎn)交叉使用,方便大家學(xué)習(xí),理解。

上代碼

Sub test()
Dim Num&
Num = Application.InputBox("請(qǐng)輸入一個(gè)三位數(shù)的的數(shù)字", "輸入框", , , , , , 3)
result = IIf(Len(Num) = 3, "位數(shù)正確!", "位數(shù)不正確!")
MsgBox result
End Sub

效果如圖:

如果輸入正確的三位數(shù)123,結(jié)果如何呢?

Excel VBA之函數(shù)篇-3.1-iif函數(shù)

再試下我們輸入56656

Excel VBA之函數(shù)篇-3.1-iif函數(shù)

5位數(shù)了,不符合我們的要求了。

這樣的場(chǎng)景比較常用在登陸頁(yè)面,判斷用戶輸入的密碼是否達(dá)到我們的要求的位數(shù)等方面。

可能有童鞋在測(cè)試代碼的時(shí)候, 會(huì)輸入三個(gè)中文漢字,如果如何呢?

Excel VBA之函數(shù)篇-3.1-iif函數(shù)

腳本居然返回位數(shù)正確的結(jié)果哦,但是我們明明要求的是輸入數(shù)字啊,三個(gè)漢字的長(zhǎng)度也是3,這好像是一個(gè)BUG啊,其實(shí)并不是,這是我們的寫法還不夠嚴(yán)謹(jǐn),針對(duì)上面的情況我們還需要判斷用戶輸入的是否是數(shù)字,這又牽扯到另外一個(gè)函數(shù),isnumber(),就是判斷括號(hào)內(nèi)的是否為數(shù)字的。我們完善下代碼

Sub test()
Dim Num
Num = Application.InputBox("請(qǐng)輸入一個(gè)三位數(shù)的的數(shù)字", "輸入框", , , , , , 3)
If WorksheetFunction.IsNumber(Num) Then
result = IIf(Len(Num) = 3, "位數(shù)正確!", "位數(shù)不正確!")
Else
MsgBox "您的輸入不合法!"
End If
MsgBox result
End Sub

再測(cè)試下,我們這里輸入拼音,很明顯程序判斷出來(lái)并不是數(shù)字,不是數(shù)字就不會(huì)去判斷是否為三位這個(gè)條件了,直接跳過(guò)這個(gè)條件,去之后另外一個(gè)條件,彈窗提示我們輸入不合法

Excel VBA之函數(shù)篇-3.1-iif函數(shù)

到這里,代碼就算是差不多完善了。

我們看看完善之后的代碼,首先通過(guò)我們之前學(xué)習(xí)過(guò)的Application.InputBox創(chuàng)建一個(gè)輸入框,和用戶之間形成一個(gè)簡(jiǎn)單的交互,當(dāng)?shù)玫接脩糨斎氲膬?nèi)容之后,我們要去判斷輸入的是否符合要求,這里我們要求輸入的是三位數(shù)字,條件有兩個(gè),三位,數(shù)字,數(shù)字我們這里可以直接使用IsNumber()這個(gè)函數(shù)來(lái)判斷,具體的用法,我們后面會(huì)講到,如果用戶輸入的是數(shù)字,則執(zhí)行長(zhǎng)度的判斷,在判斷長(zhǎng)度的時(shí)候,我們不再通過(guò)if.....else......這樣的形式來(lái)輸出結(jié)果,我們選擇通過(guò)IIF函數(shù)來(lái)進(jìn)行判斷

result = IIf(Len(Num) = 3, "位數(shù)正確!", "位數(shù)不正確!")

如果長(zhǎng)度符合3,那么就返回第一個(gè)參數(shù)的內(nèi)容,位數(shù)正確,如果長(zhǎng)度不為3,則返回第二個(gè)參數(shù)的結(jié)果,位數(shù)不正確,簡(jiǎn)單的一行代碼就可以實(shí)現(xiàn)之前要寫好幾行的if判斷語(yǔ)句,在一些簡(jiǎn)單的判斷中,IIF函數(shù)的效率還是可以的。

今天的知識(shí)點(diǎn),你GET了嘛?

完整代碼加注釋

Sub test()
Dim Num
Num = Application.InputBox("請(qǐng)輸入一個(gè)三位數(shù)的的數(shù)字", "輸入框", , , , , , 3) "構(gòu)造輸入框,形成交互
If WorksheetFunction.IsNumber(Num) Then "判斷用戶輸入的是否是數(shù)字
result = IIf(Len(Num) = 3, "位數(shù)正確!", "位數(shù)不正確!") "如果是數(shù)字,進(jìn)一步判斷位數(shù)是否正確
Else
MsgBox "您的輸入不合法!"
End If
MsgBox result
End Sub

總結(jié)

==========================================================================

今天我們主要學(xué)習(xí)了一個(gè)函數(shù)就是IIF函數(shù),他是excel中if函數(shù)的翻版,在VBA中,在一些簡(jiǎn)單的判斷中,他能夠節(jié)省我們的代碼量,讓程序執(zhí)行的更加的迅速,同時(shí)順帶提前接觸了下isnumber()這個(gè)函數(shù),用來(lái)判斷是否是數(shù)字的,大家可以結(jié)合自己的使用場(chǎng)景來(lái)練習(xí)這個(gè)函數(shù),VBA雖然簡(jiǎn)單,但是還是要經(jīng)常練習(xí)的哦 。

==========================================================================

本人已經(jīng)打算長(zhǎng)期分享一些網(wǎng)絡(luò)搜集的各種VBA知識(shí),如果大家有問題也可以提出來(lái)共同解決,一起進(jìn)步,畢竟VBA的世界還是很大的。

因?yàn)榛旧隙际亲詫W(xué)的,很多代碼和知識(shí)都是來(lái)源于網(wǎng)絡(luò)的,如果在分享的過(guò)程中,正好拿了某位大神的代碼,請(qǐng)告訴我,我將標(biāo)注代碼來(lái)源出處,也方便大家學(xué)習(xí)分享,謝謝!

如果你有什么想要分享的,或者有什么想要知道的,都可以留言等方式告訴我,大家一起努力進(jìn)步。

好了,明晚19:00,準(zhǔn)時(shí)再見。

=============================歷史相關(guān)文章==============================Excel VBA——文件夾的相關(guān)操作(1)

Excel VBA之FSO-2.5 FSO的一些其他功能-即用型

Excel VBA之FSO-2.6總結(jié)篇

1.《IIf Excel VBA之函數(shù)篇-3.1-iif函數(shù)》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無(wú)關(guān),侵刪請(qǐng)聯(lián)系頁(yè)腳下方聯(lián)系方式。

2.《IIf Excel VBA之函數(shù)篇-3.1-iif函數(shù)》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。

3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來(lái)源地址,http://f99ss.com/jiaoyu/227711.html