Excel VBA之函数篇-3.1-iif函数

哈喽小伙伴们,周末过得愉快嘛?反正我过的并不是很愉快,为什么呢?因为广州下雨了,大周末的居然下雨,哎,只能宅在家里了,听说还会降温呢,不知道是真的还是假的,都快要4月天了,还是那么反常的天气,哎。

之前我们已经经过了两个系列的学习,现在我们如期的进入第三系列,之前也和大家介绍过了本系列主要是讲述一些比较常用的VBA函数,函数篇学起来相对有点枯燥,因为他并不能够马上实现某种功能,但是大部分的功能都离不开各种函数的配合,同时一些VBA函数和excel函数也是通用的,学好函数作用还是很大的,好啦,我们进入函数的第一篇,今天要介绍的就是IIF函数

看到这个IIF函数,相信很多童鞋都会认为是我打错字了,应该是IF,然而并不是这样的,在VBA中,确实是有IIF函数的,而它的功能和excel中的if函数的功能是相同的,可以简单的理解为,IIF就是原来excel的if,这样应该会更好理解,格式如下:

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

如果条件成立,返回Y,如果不成立,返回N,是不是和excel的if是完全一样的呢,好了,我们来看一个例子。我们综合我们之前学习过的输入框,通过输入框和用户之间进行交互的,让用户输入一个三位数的数字,如果用户输入的是三位数,就返回YES,反之则返回NO。为了不断得巩固之前学习过得知识,我们在之后得例子中,尽量新旧知识点交叉使用,方便大家学习,理解。

上代码

Sub test()
Dim Num&
Num = Application.InputBox("请输入一个三位数的的数字", "输入框", , , , , , 3)
result = IIf(Len(Num) = 3, "位数正确!", "位数不正确!")
MsgBox result
End Sub

效果如图:

如果输入正确的三位数123,结果如何呢?

Excel VBA之函数篇-3.1-iif函数

再试下我们输入56656

Excel VBA之函数篇-3.1-iif函数

5位数了,不符合我们的要求了。

这样的场景比较常用在登陆页面,判断用户输入的密码是否达到我们的要求的位数等方面。

可能有童鞋在测试代码的时候, 会输入三个中文汉字,如果如何呢?

Excel VBA之函数篇-3.1-iif函数

脚本居然返回位数正确的结果哦,但是我们明明要求的是输入数字啊,三个汉字的长度也是3,这好像是一个BUG啊,其实并不是,这是我们的写法还不够严谨,针对上面的情况我们还需要判断用户输入的是否是数字,这又牵扯到另外一个函数,isnumber(),就是判断括号内的是否为数字的。我们完善下代码

Sub test()
Dim Num
Num = Application.InputBox("请输入一个三位数的的数字", "输入框", , , , , , 3)
If WorksheetFunction.IsNumber(Num) Then
result = IIf(Len(Num) = 3, "位数正确!", "位数不正确!")
Else
MsgBox "您的输入不合法!"
End If
MsgBox result
End Sub

再测试下,我们这里输入拼音,很明显程序判断出来并不是数字,不是数字就不会去判断是否为三位这个条件了,直接跳过这个条件,去之后另外一个条件,弹窗提示我们输入不合法

Excel VBA之函数篇-3.1-iif函数

到这里,代码就算是差不多完善了。

我们看看完善之后的代码,首先通过我们之前学习过的Application.InputBox创建一个输入框,和用户之间形成一个简单的交互,当得到用户输入的内容之后,我们要去判断输入的是否符合要求,这里我们要求输入的是三位数字,条件有两个,三位,数字,数字我们这里可以直接使用IsNumber()这个函数来判断,具体的用法,我们后面会讲到,如果用户输入的是数字,则执行长度的判断,在判断长度的时候,我们不再通过if.....else......这样的形式来输出结果,我们选择通过IIF函数来进行判断

result = IIf(Len(Num) = 3, "位数正确!", "位数不正确!")

如果长度符合3,那么就返回第一个参数的内容,位数正确,如果长度不为3,则返回第二个参数的结果,位数不正确,简单的一行代码就可以实现之前要写好几行的if判断语句,在一些简单的判断中,IIF函数的效率还是可以的。

今天的知识点,你GET了嘛?

完整代码加注释

Sub test()
Dim Num
Num = Application.InputBox("请输入一个三位数的的数字", "输入框", , , , , , 3) "构造输入框,形成交互
If WorksheetFunction.IsNumber(Num) Then "判断用户输入的是否是数字
result = IIf(Len(Num) = 3, "位数正确!", "位数不正确!") "如果是数字,进一步判断位数是否正确
Else
MsgBox "您的输入不合法!"
End If
MsgBox result
End Sub

总结

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

今天我们主要学习了一个函数就是IIF函数,他是excel中if函数的翻版,在VBA中,在一些简单的判断中,他能够节省我们的代码量,让程序执行的更加的迅速,同时顺带提前接触了下isnumber()这个函数,用来判断是否是数字的,大家可以结合自己的使用场景来练习这个函数,VBA虽然简单,但是还是要经常练习的哦 。

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

本人已经打算长期分享一些网络搜集的各种VBA知识,如果大家有问题也可以提出来共同解决,一起进步,毕竟VBA的世界还是很大的。

因为基本上都是自学的,很多代码和知识都是来源于网络的,如果在分享的过程中,正好拿了某位大神的代码,请告诉我,我将标注代码来源出处,也方便大家学习分享,谢谢!

如果你有什么想要分享的,或者有什么想要知道的,都可以留言等方式告诉我,大家一起努力进步。

好了,明晚19:00,准时再见。

=============================历史相关文章==============================Excel VBA——文件夹的相关操作(1)

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

Excel VBA之FSO-2.6总结篇

1.《IIf Excel VBA之函数篇-3.1-iif函数》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《IIf Excel VBA之函数篇-3.1-iif函数》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/jiaoyu/227711.html