精华内容
下载资源
问答
  • Excel VBA条件编译语句

    2020-06-15 10:37:19
    作者:iamlaosong ...为了工具的兼容性,可以采用条件编译#If…Then…#Else语句。 Sub ttt() #If VBA7 Then MsgBox "VBA7" #If Win64 Then MsgBox "win64" #Else MsgBox "win32" #End If #Else

    作者:iamlaosong

    我的一个工具只能在32位环境下使用,因为64位环境下API声明略有不同。为了工具的兼容性,可以采用条件编译#If…Then…#Else语句。注意,没有“#”号的是正常条件语句,有“#”号的是条件编译语句。条件编译语句中的条件判断会用到编译常数,除了系统自带的外,也可以自己用#const定义。

    1、常数定义语句:

    2、条件编译语句:

    3、测试代码:

    Sub ttt()
        #If VBA7 Then
            MsgBox "VBA7"
            #If Win64 Then
                MsgBox "win64"
            #Else
                MsgBox "win32"
            #End If
        #Else
            MsgBox "vba6"
        #End If
        
    End Sub
    

    之所以用条件编译,是因为一个环境下的语句在另一个环境下可能会报错,用条件编译就没这个问题了。下面的框架就是用来判断环境是否为VBA7和Win64环境,如果是,API声明前面加上PtrSafe关键字。

     #If VBA7 And Win64 Then

    Declare PtrSafe Function ......

    ......

    #Else

    Declare Function ......

    ......

    #End If

    参见:VBA7的诞生-VBA将会继续存活下去

    展开全文
  • 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
    
    展开全文
  • vba判断语句

    千次阅读 2019-05-21 11:13:01
    1)If…Then…Else 语句 如1:If A>B And C<D Then A=B+2 Else A=C+2 如2:If x>250 Then x=x-100 或者 If Number < 10 Then Digits = 1 ElseIf Number < 100Then Digits = 2 Else Digits = 3 End If...

    1)If…Then…Else 语句
    如1:If A>B And C<D Then A=B+2 Else A=C+2
    如2:If x>250 Then x=x-100
    或者
    If Number < 10 Then
    Digits = 1
    ElseIf Number < 100Then
    Digits = 2
    Else
    Digits = 3
    End If
    2)Select Case…Case…End Case 语句
    Select Case Pid
    Case “A101”
    Price=200
    Case “A102”
    Price=300
    ……
    Case Else
    Price=900
    End Case
    3)Choose 函数
    choose(index, choce-1,choice-2,…,choice-n),可以用来选择自变量串列中的一个值,
    并将其返回,index 必要参数,数值表达式或字段,它的运算结果是一个数值,且界于1 和可
    选择的项目数之间。choice 必要参数,Variant 表达式,包含可选择项目的其中之一。
    如:
    GetChoice = Choose(Ind, “Speedy”, “United”, “Federal”)
    4)Switch 函数
    Switch(expr-1, value-1, expr-2, value-2 , expr-n,value-n)
    switch 函数和Choose 函数类似,但它是以两个一组的方式返回所要的值,在串列中,最先为
    TRUE 的值会被返回。expr 必要参数,要加以计算的Variant 表达式。value 必要参数。如
    果相关的表达式为True,则返回此部分的数值或表达式,没有一个表达式为True,Switch 会
    返回一个Null 值。
    如:
    Sheet1.Cells(1, 3) = Switch(“人民币” = “美元”, “$”, “人民币” = “人民币”, “¥”, “美元” = “欧元”, “€”)
    返回 “¥”

    展开全文
  • 一 理解分支条件语句 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

    展开全文
  • ExcelVBA之Case语句

    千次阅读 2020-06-06 03:32:57
    有时候,作决定是基于测试表达式的条件,...使用关键字Is的SelectCase语句的语法如下: Select Case myNumber Case Is <10 MsgBox "The number is less than 10" Case 11 MsgBox "You entered eleven." .
  • vba】循环语句

    千次阅读 2019-09-03 23:20:42
    vba里面的循环结构:Do…While, Do…Until, For…Next, For…Each, and While…Wend do while Do While 条件 语句1 语句2 语句N Loop 示例 Sub ApplyBold() Do While ActiveCell.Value <>"" ActiveCell....
  • 基本语法 ...单行写法,同时且执行语句 If a < 20 Then [b2] = "good": [b3] = "yes" 单行 if else If a < 20 Then [b2] = "aa" Else [b2] = "bb" 其他的细节看这个人总结的吧...
  • VBA中冗长的多条件判断如何破

    千次阅读 2019-01-31 04:48:34
    判断语句VBA中经常用到的代码,语法格式也很简单,但是有些场景中判断条件有很,如下面代码所示。并且字段不断增多,程序中需要进行判断的地方有处,每次增加判断条件都要改处,既麻烦又容易出错。 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 ...
  • VBA嵌套if语句

    千次阅读 2019-09-28 00:14:36
    一个If或ElseIf语句可以嵌套在另一个If...这使得VBScript能够轻松处理复杂的条件。 语法 以下是VBScript中嵌套的If语句的语法。 If(boolean_expression) Then Statement 1 ..... ..... Statement n ...
  • VBA学习基础之条件语句 1.4.1 If … Then … 一个if语句由一个布尔表达式和一个或个语句组成。如果条件被评估为True,则执行If条件块下的语句。如果条件被评估为False,则执行If循环块后面的语句。 If(boolean_...
  • VBA判读语句

    2018-11-01 17:59:19
    一个If语句,后面可以跟一个或个由布尔表达式组成的elseif语句,然后是一个默认的else语句,当所有条件变为
  • VBA循环语句

    2020-03-18 22:23:51
    VBA–循环语句 1.Do Loop (1)Do while Sub t1() x = 1 Do While x < 18 x = x + 1 Cells(x, 4) = Cells(x, 2) * Cells(x, 3) Loop End Sub (2)Do until Sub t2() Dim x As Integer x = 1 Do x = x + 1 Cells(x, 4...
  • 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 ...
  • VBA if语句

    千次阅读 2019-09-28 00:14:32
    一个if语句由一个布尔表达式和一个或语句组成。如果条件被评估为True,则执行If条件块下的语句。如果条件被评估为False,则执行If循环块后面的语句。 语法 以下是VBScript中的If语句的语法。 If(boolean_...
  • VBA If语句举例

    千次阅读 2019-05-12 11:46:24
    Sub If条件() If Sheet1.Range(“B1”) >= 90 Then Sheet1.Range(“B2”) = “优秀” ElseIf Sheet1.Range(“B1”) >= 80 Then Sheet1.Range(“B2”) = “良好” ElseIf Sheet1.Range(“B1”) >= 79 Then ...
  • 使用VBA动态创建SQL查询语句

    千次阅读 2018-02-28 07:19:00
    VBA使用ADO可以高效的查询数据,但是写SQL查询语句是个有些令人头痛的事情,其实在ADO中用到的SQL语句的语法并不是很复杂,很时候是由于即要思考SQL的语法,又要用VBA的字符串连接命令,最终搞得一团糟。...
  • 直到条件为 True 时重复语句 直到条件变成 True 才重复语句 从循环内退出 Do...Loop 语句 使用 For...Next 语句 使用 For Each...Next 语句 对某范围的单元格做循环 在完成前退出 For Each...Next 循环 使用 ...
  • VBA入门的基础语句

    万次阅读 多人点赞 2017-06-02 18:12:53
    VBA入门的基础语句  选择当前活动的工作簿:  ThisWorkbook.Activate  如果选择其他工作簿,注意该工作簿一定是打开的,并且不要忘记加上后缀“.xls” ,例如:  Windows("Totol.xls")....
  • VBA中的10种循环语句

    万次阅读 多人点赞 2019-04-17 12:00:31
    VBA中的10种循环语句 1、For – Next '循环数组 ArraySum = 0 For i = 1 To 10 ArraySum = ArraySum + MyArray(i) Next i 2、For Each – Next '循环单元格集合 SelectionSum = 0 For Each cell In Selection ...
  • VBA :goto语句用法,标签和行号。

    千次阅读 2020-01-03 12:14:27
    1 goto语句 语法:goto 行号/行标签 goto可以跳转到 行号,或行标签 行号:可以查VBE的行数 行标签:需要先定义 例子 line_goto1: goto line_goto1 '可以带: 或没有 2 VBE自带的行号 VBE其实是有默认...
  • Excel VBA 基础部分 一、定义语句 '定义变量和分配存储空间 Dim [ WithEvents ] varname [ ( [ subscripts ] ) ] [ As [ New ] type ] . . . 部分 说明 withEvents 可选。该关键字指定varname是对象变量,...
  • VBA编程常用语句(转载) 1、Option Explicit '强制对模块内所有变量进行声明 Option Private Module '标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示 Option Compare Text '字符串不区分大小写 ...
  • ExcelVBA的Do,while语句

    2021-05-09 12:37:31
    Do While循环条件
  • VBA语句三百句,语句功能有说明;这是VBA爱好都最大的帮助,免费提供给大家。喜欢的话评分一下。谢谢。
  • 目录 IF分支结构 逻辑运算符 逻辑运算符And,其语法: 逻辑运算符Or,其语法如下: ... 在VBA的分支结构中,最常用的就是IF...Then.Else结构,其语法为 If condition Then [statements][Else elsesta..
  • SUMIFS函数示例代码数据源前提条件友情提示 示例代码 Sub Select_Group1() Dim cnn As New ADODB.Connection '创建Connection对象,该对象代表了Excel与后面指定数据库的连接 Dim rst As ADODB.Recordset '创建...
  • Excel通过VBA访问数据库时需要根据表中的值生成SQL语句,由于字段类型不同,构成的方法也有差别,比如字符型要加单引号,日期型需要转换。如果分别处理,代码量就会比较大。 其实有个非常简单的办法,就是把语句写好...
  • VBA-判断语句之Select

    千次阅读 2018-11-08 16:01:46
    声明:笔记来源于我要自学网-《Excel VBA基础教程》-授课讲师:曾贤志 Select Cate 语句 根据表达式的值, 来决定执行几组语句中的其中之一。 Sub select单条件判断() i = 1 Select Case i Case Is &gt; 0 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,567
精华内容 1,026
关键字:

vba多条件语句