vba if else多层嵌套例子 (vba中if语句多条件判断的用法)

No.1

条件判断在程序应用中是一个必不可少的语句,正确运用条件判断语句可提高程序转向功能,是一定要学会的一个基本操作技能。

本节介绍一下if...Then...Else语句

vba如何使用ifelse语句,vba中if语句多条件判断的用法

if语句并不陌生,任何编程学习过程中都将从基础的判断语句开始,但是用好if语句要掌握更多的其它知识,比如比较函数,运算函数,还有其它一些特定功能的函数,都是条件判断中的条件选项。

所以,要对一个条件进行判断并不是一个很简单的事情。

如果if嵌套过多,那么就使程序的运行效率大大降低,而且对于程序的维护工作也是一件十分头痛的事情。

所以,从一开始就要对判断设计有一个合理的计划,不能做过多判断嵌套,而且判断条件要有合理性。如果一旦超出判断范围,要有容错处理机制。

No.2

语法

if语句语法如下图所示

vba如何使用ifelse语句,vba中if语句多条件判断的用法

简单地使用如下代码:

If 条件 Then

程序代码

Else

程序代码

End if

复杂一点的

If 条件 Then

程序代码

Elseif 条件 Then

程序代码

Else

程序代码

End if

上面只是说了一些理论上的东西,下面是一个示例,对if...Else语句进行说明。

No.3

vba如何使用ifelse语句,vba中if语句多条件判断的用法

示例功能是对C列数据进行一个比较,分别对应不同的数值,设置其单元格背景颜色。

拓展下来,可以对一些成绩、销售收入、生产产量等等一些数据进行区间分类判断,并做出相应的数据处理。

简单来说可实现如上一些实际应用。

代码

vba如何使用ifelse语句,vba中if语句多条件判断的用法

按钮代码

Private Sub CommandButton1_Click()
Dim cell As Range, xcell As Range
Set cell = Range("C3:C15")
cell.Item(1).Offset(0, 1).Resize(cell.Rows.Count, 4).Clear
For Each xcell In cell
    If xcell.Value <= 50 Then'如果小于等于50
        xcell.Offset(0, 1).Interior.ColorIndex = 8
    ElseIf xcell.Value > 50 And xcell.Value < 80 Then'如果大于50小于80
        xcell.Offset(0, 2).Interior.ColorIndex = 9
    Else
        If xcell.Value >= 80 And xcell.Value <= 99 Then'如果小于等于80小于等于99
            xcell.Offset(0, 3).Interior.ColorIndex = 21
        ElseIf xcell.Value = 100 Then'如果等于100
            xcell.Offset(0, 4).Interior.ColorIndex = 35
        End If
    End If
Next xcell
End Sub

执行以上代码可实现表中的数据判断和背景颜色设置。

No.4

下面是一个窗体控件判断的比较,本例将判断窗体中的控件,如果是ComboBox控件,就显示其值。

vba如何使用ifelse语句,vba中if语句多条件判断的用法

本例应用于Form窗体编程中,可对窗体中的控件类型进行判断。

其中代码"TypeOf xObj Is Msforms.ComboBox"可对窗体中的组合框进行判断,如果是组合框就返回True,通过这个条件,可以对组合框进行操作。

具体代码如下图所示

vba如何使用ifelse语句,vba中if语句多条件判断的用法

代码对窗体中的所有控件进行遍历,如果条件成立就输出值。

Dim xObj As Object
For Each xObj In Me.Controls
MsgBox TypeOf xObj Is TextBox
    If TypeOf xObj Is MsForms.ComboBox Then
        MsgBox xObj.Value
    End If
Next xObj

在调试此代码的时候发生了一些问题,就是对文本框TextBox类进行判断的时候,不能返回True,进过多次测试发现代码应用有些错误。

如下代码并不能返回True:

TypeOf xObj Is TextBox

TypeOf xObj Is Lable

要这样写才可以:

TypeOf xObj Is MsForms.TextBox

TypeOf xObj Is MsForms.Lable

但是TypeOf xObj Is MsForms.ComboBox和TypeOf xObj Is ComboBox是完全可以的,不知道是什么原因,有知道的朋友欢迎留言。

关注、收藏

---END---