首页 > 其他分享 >条件判断IF Else的加持,让VBA能够处理复杂条件,学会了你就是大神

条件判断IF Else的加持,让VBA能够处理复杂条件,学会了你就是大神

时间:2022-12-13 19:34:37浏览次数:45  
标签:语句 VBA 加持 Sub 单元格 Else 判断 条件 ElseIf


条件判断IF Else的加持,让VBA能够处理复杂条件,学会了你就是大神_条件判断

Hi,大家好,本专栏将会从零开始和大家用图文的方式,让你从零基础学会VBA!有兴趣的小伙伴可以持续关注我,或者在专栏进行查看学习,愿与君携手共进!


相信大家经过前面的学习已经能够轻松的说出什么是VBA常量和变量,数组等等基本知识点?那么今天我们开始学习Excel 关于VBA中IF多条件语句的用法,让你轻松变大神,学会他了,你就能够跨入VBA世界的大门的钥匙啦!


先来看看对IF函数的解释:一般是指程序设计或Excel等软件中的条件函数,根据指定的条件来判断其“真”(TRUE)、“假”(FALSE),根据逻辑计算的真假值,从而返回相应的内容。其实VAB中间的IF函数和我们工作表的IF函数差不多,只是写法稍许有些不同。


if语句的含义:if语句字面意思就是如果条件为真,那么就执行if语句里面的程序,这个程序,一般指then后面的语句。另外需要说的一点是一个if语句可以没有end if,但绝对不能没有then,这一点是我们要注意到的。一个If或ElseIf语句可以嵌套在另一个If或ElseIf语句中。内部的If语句是根据最外层的If语句执行的。这使得VBA能够轻松处理复杂的条件。


我们对这个IF判断函数分为4步为你揭开她的神秘面纱,学会了,你就能够处理一些录制宏不能完成的操作了。


Step-01 if……then……结构,这个结构的使用方法和我的工作表的IF函数有的类似,但是又不是完全相同。这个结构一般用在我们比较简单的判断语,我们通过如下的实例让你学会他!

实例:如果A1单元格不为空,那么就执行Then后面的语句,即弹出一个提示框“单元格不为空”

 Sub Step01()

If Range("a1") <> "" Then MsgBox "单元格不为空"

End Sub

条件判断IF Else的加持,让VBA能够处理复杂条件,学会了你就是大神_条件判断_02

 可以发现,这个语句只能完成一个条件判断,即我们判断A1单元格是不是为空,如果我们要同时增加一个条件来判断B1单元格是不是同时为空,那么这种写法就完成不了,这个时候我们可以对他进行改善,增加AND语句,如下所示:

Sub Step01()

If Range("a1") <> "" And Range("b1") <> "" Then MsgBox "单元格不为空"

End Sub

条件判断IF Else的加持,让VBA能够处理复杂条件,学会了你就是大神_VBA_03


Step-02 if……then……结构,这个语句同样是用于单选择判断语句,具体用法看下面实例。

实例:如果单元格A11不为空值了,那么在相应的第二列单元格输出“我是Excel,喜欢可以关注我”

条件判断IF Else的加持,让VBA能够处理复杂条件,学会了你就是大神_嵌套_04

 Sub Step02()

If Cells(11, 1) <> "" Then

Cells(11, 2) = "我是Excel,喜欢可以关注我"

Exit For

End If

End Sub

其实这种写法才是IF-then-End IF语句的最官方的写法,最最标准的写法。聪明的你,肯定发现上面第一个语句就是这个语句就是缩写方法。此时相信你已经能够明白单条件的IF的语句的使用方法啦!


Step-03 if ……then……else……end if结构,这个结构通常被我们用于2个条件的判断,即他们判断只有两个可能的情况先选择的判断语句,即一个硬币不是正面朝上的话,那么必定是反面朝上,具体我们可以见下面实例。

实例:对于A1单元格进行判断,如果单元格值为空,则在相应的B1单元格输出false,否则在C1输出Ture。

条件判断IF Else的加持,让VBA能够处理复杂条件,学会了你就是大神_条件判断_05

 Sub Step03()

If Range("a1") = "" Then

Range("b1") = "False"

Else

Range("c1") = "True"

End If

End Sub

这个语句也是比较好理解,适用于场合为只有两种结果的情况下,我们只要按需选择即可。


Step-04 if ……then……elseif……then……else……end if结构,该结构用于多条件判断语句执行,很多时候,你需要检查非常多种的情况,你可以使用子句ElseIf来将一些If条件结合在一起。使用If…Then…ElseIf语句,你可以比用前面中的If…Then…Else语句可以完成更多的条件判断。这里是If…Then…ElseIf语句的语法:

条件判断IF Else的加持,让VBA能够处理复杂条件,学会了你就是大神_条件判断_06


PS: Else子句是可选的;如果当所有条件为假时,没有要执行的操作,那么你就可以忽略它。你的程序里可以包括任何多个ElseIf子句和条件。ElseIf子句总是出现在Else子句之前的,只有当ElseIf子句的条件为真时,它的语句才会被执行。

实例:A列的学员成绩进行分析判断,当他们的大于等于80分的为优秀;60到80之间的为及格;0到60分之间的为不及格;0分为考试无效。执行完成以后的结果如C列所示。

条件判断IF Else的加持,让VBA能够处理复杂条件,学会了你就是大神_VBA_07


这个多条件判断是我们常用的,也是我们数据处理的时候经常会用的,对于这个的结构的理解,你可以将ElseIf—then理解为IF—Then单个结构进行叠加而成的,就像一件房子是可以有很多块砖瓦进行叠加的一样。


Step-05 if语句嵌套使用,这是也是我们常常用于多条件判断的语句,这个IF---Then函数之支持多层嵌套的,就如同我们2007版本的工作表IF函数支持不超过7层嵌套,有了嵌套,就让他真的变得异常强大,相信对函数熟悉的小伙伴肯定非常熟悉啦!

条件判断IF Else的加持,让VBA能够处理复杂条件,学会了你就是大神_条件判断_08

 如上例子我们只是嵌套了2个IF 语句,当然你可以嵌套更多的语句,当然你增加的判断逻辑越多,那边他执行的效率将会下降,这个是在后面的学习会告诉你,如何加快多层IF判断语句的执行效率的。


好啦!快乐的时间总是非常短暂的,又到了和大家说再见的时候,如果大家感觉本文如果对你有所帮助的话,请帮忙转发点赞,谢谢您能观看到现在,我们下期再见!

我是Excel教案,关注我持续分享更多的Excel技巧!

如果有不明白的或者不懂的可以在下方留言,我们会一一解答的。



标签:语句,VBA,加持,Sub,单元格,Else,判断,条件,ElseIf
From: https://blog.51cto.com/u_15705258/5934978

相关文章

  • Winform DevExpress控件库(三) 使用NavBarControl控件定制导航栏
    NavBarControl控件:主要作用是制作包含多个选项组并且每个组里包含多个子选项的导航栏;位于工具箱->Navigation&Layout(导航栏与布局类控件)在工具箱输入名称NavBarControl......
  • VBA EXCEL 文件合并
    SubUnionWorksheets()DimiAsLong'循环变量i=0DimjAsLong'循环变量j=0Diminsert_rowAsLong'合......
  • 成功掌握python for if else break的精髓
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • switch的一些思考(seitch与ifelse的区别....)
    Switch与If--else的比较switch...case与if...else的根本区别在于:switch...case会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与switch变量的值是相等的......
  • python for-else break continue应用
    ##for临时变量in序列:##重复执行的代码##......##else:##循环正常结束后要执行的代码#所谓else指的是循环正常结束后要执行的代码,即如果是bresk终止......
  • oracle 客户端连接VBA模板使用教程
    首先解释一个VBA是什么。VBA全称:VisualBasicforApplications。我这里的是指办公软件excel中的VBA宏功能。Oracle中我们是可以多个客户端访问服务器端的。......
  • VBA 文件对话框
    本文讲解VBA文件对话框的使用Subtest()DimfdAsFileDialog'定义FileDialog对象变量Setfd=Application.FileDialog(1)'实例化一个FileDialog对象变......
  • vba-光标移开文本框触发的事件
    PrivateSubTextBox1_AfterUpdate()TextBox1.Text=Format(CDate(TextBox1.Text),"yyyy/m/d")EndSub PrivateSubTextBox1_AfterUpdate()OnErrorGoTo......
  • VBA-Excel边框加颜色
    Subfont_sty(RngAsRange)Rng.SelectSelection.Font.Bold=TrueWithSelection.Interior.Pattern=xlSolid.PatternColorIndex=xlAutom......
  • vba进度条制作
    Sub进度条()DimrowTotalAsIntegerrowTotal=100Fori=1TorowTotalStep1prgramBarShow.Show0prgramBarShow.lblProgress.Wi......