精华内容
下载资源
问答
  • vba-条件语句

    2012-04-01 17:35:57
    然而,为了可读性可能会使用 Select Case 语句而不使用嵌套级的 If...Then...Else 语句。 如果条件为 True 则运行语句条件为 True 时,若只要执行一个语句,则可以使用单行的 If...Then...Else 语...

    根据条件的值,可使用 If...Then...Else 语句运行指定的语句或一个语句块。If...Then...Else 语句可根据需要嵌套多级。然而,为了可读性可能会使用 Select Case 语句而不使用多嵌套级的 If...Then...Else 语句。

    如果条件为 True 则运行语句

    当条件为 True 时,若只要执行一个语句,则可以使用单行的 If...Then...Else 语法。下列的示例显示了单行语法,省略了 Else 关键字

    Sub FixDate()
        myDate = #2/13/95#
        If myDate < Now Then myDate = Now
    End Sub
    

    为了运行多行代码,必须使用多行的语法。而此语法包含 End If 语句,如同下面示例所示:

    Sub AlertUser(value as Long)
        If value = 0 Then
            AlertLabel.ForeColor = "Red"
            AlertLabel.Font.Bold = True
            AlertLabel.Font.Italic = True
        End If
    End Sub
    

    如果条件为 True,运行某些语句;条件为 False,运行其它的语句

    使用 If...Then...Else 语句可以定义两个可执行的语句块:其中一个块会在条件为True 时执行;而另一个块会在条件为 False 时执行。

    Sub AlertUser(value as Long)
        If value = 0 Then
            AlertLabel.ForeColor = vbRed
            AlertLabel.Font.Bold = True
            AlertLabel.Font.Italic = True
        Else
            AlertLabel.Forecolor = vbBlack
            AlertLabel.Font.Bold = False
            AlertLabel.Font.Italic = False
        End If
    End Sub
    

    如果第一个条件为 False 时,测试第二个条件

    如果第一个条件为 False,则可以在 If...Then...Else 语句中加上 ElseIf 语句来测试第二个条件。例如,下列的函数过程根据工作分类来计算奖金。如果所有 If ElseIf 语句中条件都是 False,则会运行跟在 Else 语句之后的语句。

    Function Bonus(performance, salary)
        If performance = 1 Then
            Bonus = salary * 0.1
        ElseIf performance = 2 Then
            Bonus = salary * 0.09
        ElseIf performance = 3 Then
            Bonus = salary * 0.07
        Else
            Bonus = 0
        End If
    End Function
    
    展开全文
  • 一 理解分支条件语句 1.1 VBA里的3种语句 顺序执行的block 分支判断语句(典型的就是指if)--- 按顺序判断,但不按顺序执行,只选择性执行,选择执行1个分支 循环语句 1.2 理解分支条件语句block内部,也是从...

    一 理解分支条件语句

    1.1 VBA里的3种语句

    • 顺序执行的block
    • 分支判断语句(典型的就是指if)--- 按顺序判断,但不按顺序执行,只选择性执行,选择执行1个分支
    • 循环语句

     

    1.2 理解分支条件语句block内部,也是从上往下执行

    • 分支语句是有序的
    • 是从上往下执行的
    • 所以很多判断逻辑,都得基于这个设计基础考虑

     

    1.3 多层条件分支语句的嵌套(先小后大)

    • 第1层(最外层):最特殊,最严格,最小范围
    • 第2层:次特殊,次严格,范围较小
    • 。。。。
    • 第N-1层(最内层):最普通,最宽泛不严格,范围很大
    • 第N层:补集,一定是补计划,和前面的组成一个完整的集合!

     

    • If elseif 嵌套
    • 先判断外层的小范围,再判断更大的范围
    • 先特殊后一般

     

    • 多个独立if
    • If
    • if
    • 是独立判断

    if 嵌套例子1

    • x>1000 最具体,范围最小,放在最外层先判断
    Sub test3001()
    
    x = Application.RandBetween(1, 2000)
    Debug.Print "x=" & x & "  ";
    
    If x >= 1000 Then
       Debug.Print "x > 1000"
       Debug.Print "到分支1了"
    ElseIf x >= 100 Then
       Debug.Print "x => 100"
       Debug.Print "到分支2了"
    ElseIf x >= 10 Then
       Debug.Print "x => 10"
       Debug.Print "到分支3了"
    Else
       Debug.Print "其他"
    End If
    
    End Sub

    if 嵌套例子2

    • x<10 最具体,范围最小,放在最外层先判断
    
    x = Application.RandBetween(1, 1000)
    Debug.Print "x=" & x & "  ";
    
    If x <= 10 Then
       Debug.Print "x <= 10"
       Debug.Print "到分支1了"
    ElseIf x <= 100 Then
       Debug.Print "x <= 100"
       Debug.Print "到分支2了"
    ElseIf x <= 1000 Then
       Debug.Print "x <= 1000"
       Debug.Print "到分支3了"
    Else
       Debug.Print "其他"
    End If
    
    End Sub

     

    1.4  一个完整的if分支判断只会执行1个分支,

    • 一个完整的if endif 判断,每次只会执行1个分支,
    • 也就是说完整的if endif 判断,是按顺序判断,但不是顺序执行,而是选择性执行,只执行1个分支

     

    • 而多个if,则是独立的,每次都会运行。效率也会低一些。
    • 如果强行把一个逻辑判断,写成多个if,会很费。
    Sub test3003() '如果多个if,独立判断多次,没过滤每个if都执行,效率低
    
    x = Application.RandBetween(1, 2000)
    Debug.Print "x=" & x
    
    If x >= 1000 Then
       Debug.Print "x => 1000"
       Debug.Print "到if1了"
    End If
    
    If x >= 100 Then
       Debug.Print "x => 100"
       Debug.Print "到if2了"
    End If
       
    If x >= 10 Then
       Debug.Print "x => 10"
       Debug.Print "到if3了"
    End If

    这个结果如下(作为反例比较)

    • 既没做到分支判断的目的
    • 每个if 都执行了一遍

     

    2  if 条件分支语句

    2.1 基础语法

    • 语法
    • if  condition then
    • elseif  condition then 
    • else
    • end if 
    Sub t6(i)
    
    If i > 90 Then
       Debug.Print ("优秀")
    ElseIf i >= 60 Then
       Debug.Print ("通过")
    Else
       Debug.Print ("不及格")
    End If
    
    
    End Sub
    
    
    Sub t7()
      a = InputBox("请输入您的成绩")
      t6 (a)
    End Sub
    

     

    2.2 语法特例:如果if then 只有1个语句,不需要end if

    Sub testif1()
    
    If a = 0 Then Debug.Print "a=0"
    a = a + 1
    If a = 1 Then
      Debug.Print "a=1"
    End If
    
    End Sub

     

    3 select case条件分支语句

    3.1 基本语法

    • select case 变量/对象
    • case condition
    • case condition
    • case else
    • 记住else 前必须带 case else  不能是单独的else
    • end select

     

    3.2 第2语法(用得少)

    • select case   判断语句
    • case true
    • case false
    • case else
    • end select

     

    Sub test9901(a, b)
    
    Select Case a > b
    Case True
         Debug.Print "a>b"
    Case False
         Debug.Print "a<b"
    End Select
    
    End Sub
    
    Sub test9902()
    Call test9901(10, 2)
    Call test9901(2, 10)
    
    End Sub

     

     

    3.2 表达式的写法

    • 表达式必须前面带 is  (类似like   case like)
    • 如果是两个表达式,需要写成   case is   >  , is <   中间逗号风格
    • 等于某个值  case 90
    • 大于  case is > 90
    • 在某个范围内,下限 to 上限  case 4 to 8
    • 多个条件,逗号分隔(表示任意一个条件满足即可,是或的关系)
    • Case 1 to 4,7 to 9,11,13
    Sub t6(i)
    
    Select Case i
       Case Is >= 90
          Debug.Print "优秀"
       Case Is < 89, Is >= 60
          Debug.Print "合格"
       Case Else
          Debug.Print "不及格"
    End Select
    
    
    End Sub
    
    
    Sub t7()
      a = InputBox("请输入您的成绩")
      t6 (a)
    End Sub
    
    
    Sub test801()
    
    Select Case Cells(179, 1).Value
    Case 0
      Debug.Print "value is 0"
    Case Is > 0
      Debug.Print "value is positive"
    Case Is < 0
      Debug.Print "value is negetive"
    End Select
    
    End Sub

     

     

    4 if 和 select 的区别

    • select…Case语句,只能执行分支中的一个语句,但是,对各个语句的判断内容是没有限制的,也即判断的内容可以overlap,这一点和IF有绝对区别的。?
    • select和IF分支结构基本上可以互相转换的,他们的主要区别是Select分支结构只能对同一个表达式的值进行分支判断,而IF却不受该限制。

     

    参考

    http://www.cnblogs.com/wuzhiblog/p/vba_three.html

    https://blog.csdn.net/bangemantou/article/details/70194123

    展开全文
  • VBA学习基础之条件语句 1.4.1 If … Then … 一个if语句由一个布尔表达式和一个或个语句组成。如果条件被评估为True,则执行If条件块下的语句。如果条件被评估为False,则执行If循环块后面的语句。 If(boolean_...

    VBA学习基础之条件语句


    1.4.1 If … Then …

    一个if语句由一个布尔表达式和一个或多个语句组成。如果条件被评估为True,则执行If条件块下的语句。如果条件被评估为False,则执行If循环块后面的语句。

    If(boolean_expression) Then
       Statement 1
       .....
       .....
       Statement n
    End If
    
    Private Sub if_demo_Click()
       Dim x As Integer
       Dim y As Integer
    
       x = 234
       y = 32
    
       If x > y Then
          MsgBox ("X 的值大于 Y 的值")
       End If
    End Sub
    

    1.4.2 If … Else …
    一个if语句由一个布尔表达式和一个或多个语句组成。如果条件评估为True,则执行if条件下的语句。如果条件评估为False,则执行else部分块下的语句。

    If(boolean_expression) Then
       Statement 1
       .....
       .....
       Statement n
    Else
       Statement 1
       .....
       ....
       Statement n
    End If
    
    Private Sub if_demo_Click()
       Dim x As Integer
       Dim y As Integer
    
       x = 10
       y = 20
    
       If x > y Then
          MsgBox ("X 的值大于 Y 的值")
       Else
          MsgBox ("Y 的值大于 X 的值")
       End If
    End Sub
    

    1.4.3 If … Elseif … Else …
    一个If语句,后面可以跟一个或多个由布尔表达式组成的elseif语句,然后是一个默认的else语句,当所有条件变为false时执行else语句块。

    If(boolean_expression) Then
       Statement 1
       .....
       .....
       Statement n
    ElseIf (boolean_expression) Then
       Statement 1
       .....
       ....
       Statement n
    ElseIf (boolean_expression) Then
       Statement 1
       .....
       ....
       Statement n
    Else
       Statement 1
       .....
       ....
       Statement n
    End If
    
    Private Sub if_demo_Click()
       Dim x As Integer
       Dim y As Integer
    
       x = 10
       y = 10
    
       If x > y Then
          MsgBox ("X 大于 Y 的值")
       ElseIf y > x Then
          MsgBox ("Y 大于 X 的值")
       Else
          MsgBox ("X 和 Y 的值相等")
       End If
    End Sub
    

    1.4.4 If 嵌套

    Private Sub nested_if_demo_Click()
       Dim a As Integer
       a = 12
    
       If a > 0 Then
          MsgBox ("The Number is a POSITIVE Number")
    
          If a = 1 Then
             MsgBox ("The Number is Neither Prime NOR Composite")
          ElseIf a = 2 Then
             MsgBox ("The Number is the Only Even Prime Number")
          ElseIf a = 3 Then
             MsgBox ("The Number is the Least Odd Prime Number")
          Else
             MsgBox ("The Number is NOT 0,1,2 or 3")
          End If
       ElseIf a < 0 Then
          MsgBox ("The Number is a NEGATIVE Number")
       Else
          MsgBox ("The Number is ZERO")
       End If
    End Sub
    

    1.4.5 Switch
    当用户想要根据Expression的值执行一组语句时,使用Switch Case语句。 每个值被称为一个”情况”,并根据每种情况变量接通测试。如果测试表达式与用户指定的任何Case不匹配,则执行Case Else语句。

    Case Else是Select Case中的一个可选语句,但是,总是使用一个Case Else语句是一个很好的编程习惯。

    Select Case expression
       Case expressionlist1
          statement1
          statement2
          ....
          ....
          statement1n
       Case expressionlist2
          statement1
          statement2
          ....
          ....
       Case expressionlistn
          statement1
          statement2
          ....
          ....   
       Case Else
          elsestatement1
          elsestatement2
          ....
          ....
    End Select
    
    Private Sub switch_demo_Click()
       Dim MyVar As Integer
       MyVar = 1
    
       Select Case MyVar
          Case 1
             MsgBox "The Number is the Least Composite Number"
          Case 2
             MsgBox "The Number is the only Even Prime Number"
          Case 3
             MsgBox "The Number is the Least Odd Prime Number"
          Case Else
             MsgBox "Unknown Number"
       End Select
    End Sub
    
    展开全文
  • 本节课主要讲解语法篇的第一篇,IF函数的当中的IF语句单一条件判断和多条件判断的使用细节。一、IF语句单一条件判断:假设:如图第二部分,当 I3>=90时,J3为通过,反之为不通过。代码如下:Sub IF单一条件判断()...

    本节课主要讲解语法篇的第一篇,IF函数的当中的IF语句单一条件判断和多条件判断的使用细节。

    一、IF语句单一条件判断:

    d50c08f262f063e60dd8afb874b48752.png

    假设:如图第二部分,当 I3>=90时,J3为通过,反之为不通过。

    20100f8045598e127b24b80c97308928.gif

    代码如下:

    Sub IF单一条件判断()

    If Sheet1.Range("I3") >= 90 Then

    Sheet1.Range("j3") = "通过"

    Else

    Sheet1.Range("j3") = "不通过"

    End If

    End Sub

    一、IF语句多条件判断:

    d50c08f262f063e60dd8afb874b48752.png

    假设:如图第一部分,当 B3>=90时,C3为良好;当 B3>=80时,C3为合格,反之为不合格。

    8499ed0a79a8f0b016d7d27005a0f0e2.gif

    代码如下:

    Sub IF多条件判断()

    If Sheet1.Range("B3") >= 90 Then

    Sheet1.Range("C3") = "优秀"

    ElseIf Sheet1.Range("B3") >= 80 Then

    Sheet1.Range("C3") = "合格"

    Else

    Sheet1.Range("C3") = "不合格"

    End If

    End Sub

    三、IF语句总结:

    1.单行形式1(If...Then)

    1.1 If 条件判断 Then 条件成立结果;

    1.2 在单行形式中,按照 If...Then 判断的结果也可以执行多条语句;

    1.3所有语句必须在同一行上并且以冒号分开。

    如:

    Sub test()

    If 1 > 10 Then a = 1: b = 2: c = 3

    End Sub

    2. 单行形式2

    If 条件判断 Then 条件成立 Else 条件不成立。

    如:

    Sub test2()

    If 1 > 1 Then MsgBox "yes" Else MsgBox "no"

    End Sub

    3.块形式(If...Then…End)

    If 条件判断 Then

    条件成立结果

    End If

    如:

    Sub test3()

    If 11 > 10 Then

    a = 1 + a

    b = 1 + a

    c = 1 + b

    End If

    End Sub

    4.块形式的If嵌套

    If 条件判断 Then

    成立时的结果

    ElseIf 条件判断 Then

    成立时的结果

    ……

    Else

    不成立时的结果

    End If

    如:

    Sub IF多条件判断()

    If Sheet1.Range("B3") >= 90 Then

    Sheet1.Range("C3") = "优秀"

    ElseIf Sheet1.Range("B3") >= 80 Then

    Sheet1.Range("C3") = "合格"

    Else

    Sheet1.Range("C3") = "不合格"

    End If

    End Sub

    展开全文
  • 大家好,今日推出常用“积木”过程案例分享第315期,今日内容是利用字典实现三条件,结果值查询。VBA是利用Office实现个人小型办公自动化的有效手段(工具)。这些资料就是我多年经验的记录,都来源于我多年的实践...
  • 本节课主要讲解语法篇的第一篇,IF函数的当中的IF语句单一条件判断和多条件判断的使用细节。一、IF语句单一条件判断:假设:如图第二部分,当 I3>=90时,J3为通过,反之为不通过。代码如下:Sub IF单一条件判断()...
  • VBA-跳转语句

    千次阅读 2018-11-08 17:56:00
    声明:笔记来源于我要自学...注意_太的GoTo 语句,会使程序代码不容易阅读及调试。 尽可能使用结构化控制语句(Do...Loop、For...Next、If...Then...Else...) Sub gotoline() Dim str$ Dim k! 123: k = k + 1 If ...
  • 情况是这样: 有表数据如下-- 带座轴承 UCF205 带座轴承 UCF206 ...2、碰到条件不符的,忽略不写。 3、碰到尾部加了"/"的字符,尾部不做任何添加。 请大神给一组可实现的代码出来,非常感谢!!!
  • VBA-判断语句之IF

    万次阅读 2018-11-08 15:28:51
    '判断语句IF单条件与多条件判断 Sub IF条件判断之单条件1() Dim a%, b% '声明变量 a = 2 '给变量赋值 b = 2 '给变量赋值 If a = b Then MsgBox "相等" '如果a等于b,就输入到窗口显示“相等” End Sub ...
  • 在工作中,我们经常会遇到根据不同的情况进行判断并做出不同的操作,有时候需要的是单条件的判断,有时候需要的是多条件的判断。1、单条件的判断语句:学习函数时我们经常用IF来判断,VBA 中也一样。语法如下:if ...
  • VBA判读语句

    2018-11-01 17:59:19
    一个If语句,后面可以跟一个或个由布尔表达式组成的elseif语句,然后是一个默认的else语句,当所有条件变为
  • 在工作中,我们经常会遇到根据不同的情况进行判断并做出不同的操作,有时候需要的是单条件的判断,有时候需要的是多条件的判断。1、单条件的判断语句:学习函数时我们经常用IF来判断,VBA 中也一样。语...
  • VBA语句 - 判断语句

    2018-08-21 19:46:00
    (1)IF判断语句 单条件判断 Sub 单条件判断() If Range("a1") > 0 Then Range("b1") = "正数" Else Range("b1") = "负数或0" ...多条件判断1 ...Sub 多条件判断1() If Range("a1") &...
  • VBA if语句

    2019-09-28 00:14:32
    一个if语句由一个布尔表达式和一个或语句组成。如果条件被评估为True,则执行If条件块下的语句。如果条件被评估为False,则执行If循环块后面的语句。 语法 以下是VBScript中的If语句的语法。 If(boolean_...
  • 作者:金人瑞 《Excel VBA175例无理论纯实战教程》学员最近正在学习郑广学老师的VBA 175例教程,这是一篇新手向的文章,也是一个新手的总结,高手可以批评文章中的不足之处,也可以无视,VBA中的IF判断, 判断一般起到...
  • 在工作中,我们经常会遇到根据不同的情况进行判断并做出不同的操作,有时候需要的是单条件的判断,有时候需要的是多条件的判断。1、单条件的判断语句:学习函数时我们经常用IF来判断,VBA 中也一样。语法如下:if ...
  • 循环语句是很多人开始使用VBA的理由,因为在批量处理大量数据的多条件判断时,函数已经没办法满足我们的需求了。而VBA可以使用简单的循环完成这一工作。循环语句1.For...Next语句在上一篇我们介绍判断语句的时候,就...
  • 上一篇文章我们给大家分享了连接运算符并且举了一些例子,那么这一篇文章我们将给大家分享一下VBA基本语法的条件判断IF语句程序。VBA中的if程序语句可以解决很的问题。主要就是判断条件,当判断条件满足时才去执行...
  • 基本语法 ...单行写法,同时且执行语句 If a < 20 Then [b2] = "good": [b3] = "yes" 单行 if else If a < 20 Then [b2] = "aa" Else [b2] = "bb" 其他的细节看这个人总结的吧...
  • SQL语句多条件求和的语句如下:SELECT 分类字段1, 分类字段2 , SUM(统计字段) as 产品总数 From [Sheet1$] GROUP BY 分类字段1, 分类字段2使用实例说明:源数据:查询内容按照姓名汇总:SQL = "SELECT 姓名,SUM...
  • VBA世界里,也有与IF语句齐名的判断语句-Select Case多条件判断语句。一.Select Case判断语句首先,先来了解一下Select Case判断语句。它的功能是根据不同的条件返回不同的值。与IF语句区别在于更适用多条件判断,...
  • 这一节来教教大家VBA中的判断结构IF语句。在VBA中,IF判断语句是非常重要的一个部分... THEN ...ELSEIF...(分支语句)下面我们分别来看看三种方式的用法:如果条件成立,那么执行语句语句结构如下:If条件Then 执...
  • VBA基础语法:GoTo语句

    千次阅读 2020-01-05 10:49:26
    GoTo 语句条件地转移到过程中指定的行。...注意 太的 GoTo 语句,会使程序代码不容易阅读及调试。尽可能使用结构化控制语句(Do...Loop、For...Next、If...Then...Else、Select Case)。 GoTo 语句示例 本示...
  • SQL语句多条件求和的语句如下:SELECT 分类字段1, 分类字段2 , SUM(统计字段) as 产品总数 From [Sheet1$] GROUP BY 分类字段1, 分类字段2使用实例说明:源数据:查询内容按照姓名汇总:SQL = "SELECT 姓名,SUM...
  • VBA中冗长的多条件判断如何破

    千次阅读 2019-01-31 04:48:34
    判断语句VBA中经常用到的代码,语法格式也很简单,但是有些场景中判断条件有很,如下面代码所示。并且字段不断增多,程序中需要进行判断的地方有处,每次增加判断条件都要改处,既麻烦又容易出错。 If ...
  • 大家好,今日我们讲VBA解数据库解决方案的第48讲内容:从数据库中导出数据到工作表后,工作表格式的设置。为什么要讲这讲内容呢?因为我们在操作数据库的时候,需要的是数据处理,往往从数据表中导出数据后,格式会...
  • 但是在我们有些时候,并不需要他按照流程执行,而是需要跳过某些语句进行执行,或者判断条件来执行的语句,这个时候我们就需要使用控制代码执行的方式,具体的几种控制执行方式如下,我们会一一讲解的。GOTO 语句IF-...
  • VBA if...else语句

    2019-09-28 00:14:34
    一个if语句由一个布尔表达式和一个或语句组成。如果条件评估为True,则执行if条件下的语句。如果条件评估为False,则执行else部分块下的语句。 语法 以下是VBScript中的if else语句的语法。 If(boolean_...
  • VBA世界里,也有与IF语句齐名的判断语句-Select Case多条件判断语句。一.Select Case判断语句首先,先来了解一下Select Case判断语句。它的功能是根据不同的条件返回不同的值。与IF语句区别在于更适用多条件判断,...
  • 语句一:if判断语句 Sub 判断1() '单条件判断 If Range("a1").Value > 0 Then Range("b1") = "正数" Else Range("b1") = "负数或0" ...Sub 判断2() '多条件判断 If Range("a1").Value > ...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 149
精华内容 59
关键字:

vba多条件语句