添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
深情的夕阳  ·  re-exporting a type ...·  1 年前    · 
挂过科的太阳  ·  Azure Storage ...·  1 年前    · 
任性的海龟  ·  SQL ...·  1 年前    · 
005.VBA的判断语句

005.VBA的判断语句

4 个月前 · 来自专栏 VBA世界


大家好,我是永不止步的老牛。

上一篇我们介绍了Excel宏,本篇我们介绍VBA的判断语句。

当我们在VBA编码中,碰到需要判断一种情况的结果来决定是不是要执行一些代码时,就要用到VBA的判断语句,我们逐步深入,先看最简单的判断语句 If…Then,语法如下:

If 条件 Then

代码1

代码2

代码n

End If

表示判断“条件”的结果,如果是True,就执行Then和End If之间的代码段,如果是False,就跳过Then和End If之间的代码段,执行End If语句之后的代码,If…Then必须以End If结束。

“条件”是使用关系运算符,逻辑运算符或两者结合的表达式,表达式的结果是True或False,表达式可以是数值表达式、字符表达式或类型判断表达式,比如说:


  • ActiveCell.Value > 23.9 :如果当前单元格的数值大于23.9就返回True,否则返回False。
  • ActiveSheet.Name= “Sheet1” :如果当前工作表名称是“Sheet1”,就返回True,否则返回False。
  • TypeOf ActiveCell Is Range :如果对象ActiveCell的类型是Range,就返回True,否则返回False。


ActiveCell表示当前单元格,ActiveCell.Value表示当前单元格的值。

ActiveSheet表示当前工作表,ActiveSheet.Name表示当前工作表的名称。

我们用前面编写的计算BMI的过程演示一下(BMI正常范围为18.5-23.9,低于18.5为体重过轻,高于23.9为体重过重),代码如下:



代码中“ If BMI >= 18.5 And BMI <= 23.9 Then ”,判断BMI大于等于18.5并且小于等于23.9,就显示提示告知正常,And表示并且,就是BMI >= 18.5和BMI <= 23.9必须同时满足才返回True,否则返回False。

代码中“ If BMI < 18.5 Or BMI > 23.9 Then ”,判断BMI小于18.5或大于23.9,就显示提示告知超标,Or表示或,就是BMI < 18.5和BMI > 23.9有一个满足就返回True,全部满足就返回False。

上面的语句我们用了2次If…Then语句进行判断,能不能只用只判断一次,条件为True时,执行一段代码,为False时执行另一段代码?可以通过使用If…Then语句的子句Else实现,语法如下:

If 条件 Then

条件为True时,代码1

条件为True时,代码2

条件为True时,代码n

Else

条件为False时,代码1

条件为False时,代码2

条件为False时,代码n

End If

只要判断“条件”,如果结果为True,就执行Then和Else之间的代码,如果条件为False,就执行Else和End If之间的语句,我们将刚才的代码修改一下,如下图:



一次判断可以决定2种执行方案,代码也简化了。

我们想要在BMI超标时能准确提示用户,是体重过轻还是体重过重,有同学说:这个好办,只要给If语句种嵌套另一个If语句就行,没问题,If语句根据需要可以嵌套If语句,修改一下代码,如下图:



If语句对于多种情况进行判断时,提供了ElseIf子句,可以减少If嵌套层级,方便阅读,代码如下:



这里重点说一下,可以包括多个ElseIf子句和条件, Else可以省略,但Else必须出现在ElseIf之后

如果我们需要判断的情况很多,比如,小于18.5的,换药分分3个档,BMI<10是体重轻的很严重,10<=BMI<15是体重非常轻,10<=BMI<18.5是体重有点轻,我们看下代码



如果BMI为20,代码会怎么执行呢?

代码会先执行1的判断,因为不满足,再执行2,还是不满足,再执行3,不满足,执行4,不满足,执行Else和End If语句执行的代码,这就是执行顺序。

如果是这种多情况判断,有另外一种判断语句Select Case语句,能够简单一点,语法如下:

Select Case 表达式

[Case 条件

[符合条件时执行的代码]] ...

[Case Else

[不符合条件时执行的代码]]

End Select

表达式:表示任何数值表达式或字符串表达式

省略号代表可以使用多个条件。只要有一个Case就需要有一个条件,子句Case Else是可选的,在所有Case条件都不满足时执行。

Case后面的“条件”,有多种写法:

A.一个表达式。

B.表达式1 To 表达式2,表达式1要小于表达式2。

C.Is表达式,结果必须为True或False。

修改上面的代码如下:



To可以这样写:Case 8 To 18

注意一下, 如果有多个Case都满足,执行第一个满足Case的语句 ,例如BMI为9时,同时满足<10、<15、<18.5三个Case,但执行第一个满足的<10的Case的语句,所以用Select要注意Case的前后顺序。

今天就介绍到这,大家最好能自己实际练习一下,下一篇文章我们介绍VBA的Do…While循环语句。

发布于 2022-12-11 22:15 ・IP 属地陕西

文章被以下专栏收录

    VBA世界

    VBA世界

    VBA从入门到精通