分享

跟烟花入门VBA之14:IF语句

 fzchenwl 2015-03-31

面讲了过程的声明,变量和常量的声明,以及赋值语句。今天咱们聊聊IF…Then…Else语句

    在工作表中,写公式时大家对IF函数应该不陌生,根据条件的不同,返回不同的值。

    VBA中,我们通过使用IF语句实现根据表达式的值有条件的执行一组语句


    语法

    单行形式

    IF 条件 Then 语句1 Else 语句2

    条件一般为数据表达式或字符串表达式,其运算结果为TrueFalse


    在没有Else子句时,语句1则为必选参数。有Else语句时语句2则为必选参数

    Dim a As Integer, b As Integer

    a= 10

    b= 20

    If a > b Then Else MsgBox 'a小于b'
    Rem 省略语句1
   If a < b Then MsgBox 'a大于b'
    REM 省略了ELSE子句
    IF a=b then msgobx 'a等于b“ else msgbox 'a不等于b”
    REM 语句1,语句2都具备。
  

   在单行模式下也可以执行多条语句。要求所有的语句必须在同一行上并且以冒号分开

    Dim a As Integer, b As Integer, c As Boolean

   a= 10

   b= 20

   If a > b Then Else MsgBox 'a<b': c = a > b


   块形式

   提供更强的结构化与适应性,并且通常也是比较容易阅读、维护及调试。

    要决定某个语句是否为一个 If 块,可检查 Then 关键字之后是什么
   如果在 Then 同一行之后,还有其它非注释的内容,则此语句就是单行形式的 If 语句。


   简单的IF块:

   If 条件 Then

      语句1

      
   End if
    例如:
    Dim a As Integer, b As Integer

    a= 10

    b= 20

    If a > b Then
      MsgBox 'a小于b'
   End IF


   复杂的IF块
   If 条件 then

         语句1

   Elseif 条件2 Then
      语句2

   Elseif 条件3 Then

      语句3

   Else

      其他语句

   End if


   当程序运行到一个 If 块,条件1 将被测试。如果条件1 True,则在 Then 之后的语句会被执行。
   如果条件1 False,则每个 ElseIf 部分的条件式(如果有的话)会依次计算并加以测试。
   如果找到某个为 True 的条件时,则其紧接在相关的 Then 之后的语句会被执行。
   如果没有一个 ElseIf 条件式为 True(或是根本就没有 ElseIf 子句),则程序会执行 Else 部分的语句。
   而在执行完 Then Else 之后的语句后,会从 End If 之后的语句继续执行。

   Else ElseIf 子句都是可选的。在 If 块中,可以放置任意多个ElseIf 子句,但是都必须在 Else 子句之前。


   例如:

   Dim lChenji As Byte

   Dim strResult As String


    lChenji = 50

    If lChenji > 90 Then

          '条件1:成绩是否大于90

       strResult = '优秀'

   ElseIf lChenji > 80 Then

       '条件2:成绩是否大于80

       strResult = '良好'

   ElseIf lChenji >= 60 Then

       '条件3:成绩是否大于等于60

       strResult = '及格'

    Else

          '所有以上条件都不满足时,不及格

       strResult = '不及格'

    End If

   MsgBox strResult



   另外If 块也能像IF函数实现嵌套,还是上面的例子,改成IF嵌套
   Dim lChenji As Byte
   Dim strResult As String

   lChenji = 80
   If lChenji >= 60 Then
      '先判断成绩是否及格
      If lChenji > 90 Then
         '子条件1:成绩是否大于90分
         strResult = '优秀'
      ElseIf lChenji > 80 Then
         '子条件2:成绩是否大于80分
         strResult = '良好'
      Else
         '上述子条件不满足的情况下
         strResult = '及格'
      End If
   Else
      '不及格
      strResult = '不及格'
   End If
   MsgBox strResult

   在IF多重判断的情况下,对于条件的使用一定要严谨

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多