如何返回两个选项中的一个(不用if语句也可以实现)
No.1
对于条件判断,VBA编程提供了一些内置函数,如判断语句If...Then...End
、If...Then...Elseif...End等等。
if语句应用虽然方便,如果一个判断只有两个项目,非此及彼,用一个函数来进行判断,就显得更加简洁方便。
下面介绍一个函数IIF,此函数对两条件进行判断,然后根据条件返回两个结果中的一个。
No.2
IIF函数语法
IIF函数有3个参数项:
第一个Expr, 必选项,是条件计算的表达式。第二个TruePart,必选项,当条件判断为真时,返回的值或表达式。第三个FalsePart,必选项,当条件判断为假时,返回的值或表达式。可以理解为函数对条件计算表达式进行计算,如果结果为真返回第二个参数值,如果结果为假返回第三个参数值 。
No.3
下面以一个实例来了解一下,应用IIF函数之后有什么神奇之处。
上图为使用IFF函数,根据行号计算(Row)设置行间隔的不同颜色和值。
对行号进行取余计算,如果计算余数为0则设置单元格值为0,背景颜色为蓝色。
如果取余数计算结果不为0,则背景颜色为黄色,单元格值为1。
同理,可以使用IFF函数根据列号(Column)计算,设置列间隔的不同颜色和值。
如下图所示:
No.4
代码
行间隔代码
Private Sub CommandButton1_Click()Application.ScreenUpdating = FalseDim cell As Range, xcell As RangeSet cell = Range("B2:P20")cell.ClearFor Each xcell In cellWith xcell.Value = IIf(xcell.Row Mod 2, 0, 1).Interior.ColorIndex = IIf(xcell.Row Mod 2, 8, 6).Borders(xlEdgeBottom).LineStyle = IIf(xcell.Row Mod 2, 1, 0).RowHeight = 20.ColumnWidth = 8End WithNext xcellApplication.ScreenUpdating = TrueEnd Sub
列间隔代码
Private Sub CommandButton2_Click()Application.ScreenUpdating = FalseDim cell As Range, xcell As RangeSet cell = Range("B2:P20")cell.ClearFor Each xcell In cellWith xcell.Value = IIf(xcell.Column Mod 2, 0, 1).Interior.ColorIndex = IIf(xcell.Column Mod 2, 14, 19).Borders(xlEdgeRight).LineStyle = IIf(xcell.Column Mod 2, 1, 0).RowHeight = 20.ColumnWidth = 8End WithNext xcellApplication.ScreenUpdating = TrueEnd Sub
两个功能代码大同小异,只有在参数Expr表达式有一些不同,一个行除以2求余数,另一个列号除以2求余数。
Rang.Value = IIf(xcell.Row Mod 2, 0, 1)
表达式:xcel.Row Mod 2"求余数
真:0
假:1
如果表达式值为真,就返回0,假返回1。
结尾
IIF函数具有很好的特殊应用性,二选一的情况下,不必要使用If..Else语句。
If..Else语句应用于多选选择情况下,如果条件成立,否则就...。
不是二选一的功能,它是如果条件成立就不定其它的功能,所以区别还是很大的。
欢迎关注、收藏
---END---