概要

编程语言的基础除了数据类型, 就是控制结构了. 所谓控制结构, 主要就是分支和循环.

分支

废话不说, 直接示例代码:

单条件判断

  1. 1 Sub Test()
  2. 2 If 2 > 1 Then
  3. 3 Debug.Print "xxxx"
  4. 4 End If
  5. 5 End Sub

执行后输出:

  1. xxxx

多条件判断

  1. if-elseif-else 结构

    1. 1 Option Explicit
    2. 2
    3. 3 Sub Test()
    4. 4 score 55
    5. 5 score 65
    6. 6 score 85
    7. 7 score 95
    8. 8 End Sub
    9. 9
    10. 10 Function score(points As Integer)
    11. 11
    12. 12 If points > 0 And points < 60 Then
    13. 13 Debug.Print "不及格"
    14. 14 ElseIf points > 80 And points < 90 Then
    15. 15 Debug.Print "良好"
    16. 16 ElseIf points >= 90 Then
    17. 17 Debug.Print "优秀"
    18. 18 Else
    19. 19 Debug.Print "及格"
    20. 20 End If
    21. 21
    22. 22 End Function

    输出结果:

    1. 不及格
    2. 及格
    3. 良好
    4. 优秀
  2. select-case 结构

    1. 1 Option Explicit
    2. 2
    3. 3 Sub Test()
    4. 4 score 55
    5. 5 score 65
    6. 6 score 85
    7. 7 score 95
    8. 8 End Sub
    9. 9
    10. 10 Function score(points As Integer)
    11. 11
    12. 12 Select Case points
    13. 13 Case 90 To 100
    14. 14 Debug.Print "优秀"
    15. 15 Case 80 To 90
    16. 16 Debug.Print "良好"
    17. 17 Case 60 To 80
    18. 18 Debug.Print "及格"
    19. 19 Case 0 To 60
    20. 20 Debug.Print "不及格"
    21. 21 End Select
    22. 22
    23. 23 End Function

    输出结果:

    1. 不及格
    2. 及格
    3. 良好
    4. 优秀

异常处理

其实异常处理, 也是一种条件判断, 只不过只将异常作为条件

  1. 1 Option Explicit
  2. 2
  3. 3 Sub Test()
  4. 4 Dim x As Integer
  5. 5
  6. 6 On Error GoTo finally
  7. 7 x = 10 / 0
  8. 8
  9. 9 finally:
  10. 10 Debug.Print "发生错误"
  11. 11
  12. 12 End Sub

输出结果:

  1. 发生错误

循环

for-next

  1. 1 Option Explicit
  2. 2
  3. 3 Sub Test()
  4. 4 Dim n As Integer
  5. 5
  6. 6 Debug.Print "打印 1 ~ 10 的奇数"
  7. 7 For n = 1 To 10 Step 2
  8. 8 Debug.Print n
  9. 9 Next n
  10. 10
  11. 11 End Sub

执行结果:

  1. 打印 1 ~ 10 的奇数
  2. 1
  3. 3
  4. 5
  5. 7
  6. 9

for-each-next

  1. 1 Option Explicit
  2. 2
  3. 3 Sub Test()
  4. 4 Dim n As Variant
  5. 5
  6. 6 Debug.Print "打印 1 ~ 10 的奇数"
  7. 7 For Each n In Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
  8. 8 If Not n Mod 2 = 0 Then
  9. 9 Debug.Print n
  10. 10 End If
  11. 11 Next
  12. 12
  13. 13 End Sub

执行结果:

  1. 打印 1 ~ 10 的奇数
  2. 1
  3. 3
  4. 5
  5. 7
  6. 9

do-loop-until

  1. 1 Option Explicit
  2. 2
  3. 3 Sub Test()
  4. 4 Dim n As Integer
  5. 5
  6. 6 Debug.Print "打印 1 ~ 10 的奇数"
  7. 7 Do
  8. 8 n = n + 1
  9. 9
  10. 10 If Not n Mod 2 = 0 Then
  11. 11 Debug.Print n
  12. 12 End If
  13. 13 Loop Until n >= 10
  14. 14
  15. 15 n = 0
  16. 16
  17. 17 Debug.Print "打印 1 ~ 10 的奇数"
  18. 18 Do Until n >= 10
  19. 19 n = n + 1
  20. 20
  21. 21 If Not n Mod 2 = 0 Then
  22. 22 Debug.Print n
  23. 23 End If
  24. 24 Loop
  25. 25
  26. 26 End Sub

执行结果:

  1. 打印 1 ~ 10 的奇数
  2. 1
  3. 3
  4. 5
  5. 7
  6. 9
  7. 打印 1 ~ 10 的奇数
  8. 1
  9. 3
  10. 5
  11. 7
  12. 9

上例中, until 的位置对循环的影响:

  1. until 在 Do 后面: 先进行判断, 再运行循环体
  2. until 在 Loop 后面: 先运行循环体, 再进行判断

示例:

  1. 1 Option Explicit
  2. 2
  3. 3 Sub Test()
  4. 4 Dim n As Integer
  5. 5
  6. 6 n = 0
  7. 7 Do
  8. 8 Debug.Print "会运行"
  9. 9 Loop Until n = 0
  10. 10
  11. 11 n = 0
  12. 12 Do Until n = 0
  13. 13 Debug.Print "不会运行"
  14. 14 Loop
  15. 15
  16. 16 End Sub

执行结果如下:

  1. 会运行

do-loop-while

  1. 1 Option Explicit
  2. 2
  3. 3 Sub Test()
  4. 4 Dim n As Integer
  5. 5
  6. 6 Debug.Print "打印 1 ~ 10 的奇数"
  7. 7 Do
  8. 8 n = n + 1
  9. 9
  10. 10 If Not n Mod 2 = 0 Then
  11. 11 Debug.Print n
  12. 12 End If
  13. 13 Loop While n < 10
  14. 14
  15. 15 n = 0
  16. 16
  17. 17 Debug.Print "打印 1 ~ 10 的奇数"
  18. 18 Do While n < 10
  19. 19 n = n + 1
  20. 20
  21. 21 If Not n Mod 2 = 0 Then
  22. 22 Debug.Print n
  23. 23 End If
  24. 24 Loop
  25. 25
  26. 26 End Sub

执行结果和 until 一样:

  1. 打印 1 ~ 10 的奇数
  2. 1
  3. 3
  4. 5
  5. 7
  6. 9
  7. 打印 1 ~ 10 的奇数
  8. 1
  9. 3
  10. 5
  11. 7
  12. 9

while vs until:

  • while 是满足条件运行循环体
  • until 是满足条件退出循环体

VBA基础 - 分支和循环的更多相关文章

  1. JS基础-分支结构-循环-数组

    1.分支结构  1.if结构    语法:    if(条件){       语句块:    }    注意:      1.条件尽量是boolean的,如果不是boolean的,以下条件值,会当做f ...

  2. VBA基础——循环语句

    VBA基础之循环语句 Sub s1() Dim rg As Range For Each rg In Range("a1:b7,d5:e9") If rg = "&quo ...

  3. javascript基础入门之js中的结构分支与循环语句

    javascript基础入门之js中的结构分支与循环语句 程序的结构①顺序结构:自上而下:②选择(分支)结构:多条路径,根据不同的条件,只执行其中一个:③循环结构:重复某些代码④配合特定的语句实现选择 ...

  4. 了不起的分支和循环03 - 零基础入门学习Python009

    了不起的分支和循环03 让编程改变世界 Change the world by program while循环 说完了分支我们来说说循环,标准的while循环语法我们已经可以熟悉掌握了. 这里我们就简 ...

  5. 了不起的分支和循环02 - 零基础入门学习Python008

    了不起的分支和循环02 让编程改变世界 Change the world by program 上节课,小甲鱼教大家如何正确的打飞机,其要点就是:判断和循环,判断就是该是不该做某事,循环就是持续做某事 ...

  6. 了不起的分支和循环01 - 零基础入门学习Python007

    了不起的分支和循环01 让编程改变世界 Change the world by program 我们今天的主题是"了不起的分支和循环",为什么小甲鱼不说C语言,不说Python了不 ...

  7. [零基础学JAVA]Java SE基础部分-04. 分支、循环语句

    转自:http://redking.blog.51cto.com/27212/116751 1.课程名称:分支.循环 本季为JAVA程序中最重要的部分,在讲解的时候除了讲解各种主要的控制语句(分支语句 ...

  8. 零基础入门学习Python(9)--了不起的分支和循环3

    前言 本节继续介绍分支和循环 知识点 while循环 Python while循环与if条件分支有点类似,在条件为真的情况下,执行某一段指定的代码.不同的是只要条件为True,while循环就会一直重 ...

  9. 零基础入门学习Python(7)--了不起的分支和循环1

    前言 我们今天的主题,是了不起的分支和循环,为什么不说c语言,Python了不起,而对分支和循环这两个知识点那么崇拜呢? 我们之前的几节课里也接触到了分支和循环,大家思考一下,如果我们的程序没有分支和 ...

随机推荐

  1. 解决 canvas 下载含图片的画布时的报错

    Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may no ...

  2. route 相关设置

    Debian系统 查看路由表: root@debian:~# ip route default via 192.168.6.1 dev enp4s0 10.0.0.0/24 dev br0 proto ...

  3. 在CAD中进行圆角标注的方法

    在CAD中,大家经常都用听到CAD标注.那其实在CAD中进行标注也是比较常见的工作,CAD标注有文字标注,数值标注等一些标注的方式.下面要来说的就是在CAD中给圆角图形标注的方法,具体操作步骤如下: ...

  4. cesium-webpack 入门开发系列一初探篇(附源码下载)

    前言 cesium-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 we ...

  5. django支付宝支付集成

    概要 本文是关于django集成支付宝[电脑网站支付]功能的过程记录. 功能逻辑主要分为两块: 用户下单跳转至支付宝支付界面 支付成功的回调验证 本文用到的alipay-sdk是基于阿里开发文档htt ...

  6. 解决webservice(Java)中dao层注入为null问题

    首先在webservice指定发布的路径类中实现 ServletContextListener, 例如: import javax.servlet.ServletContextEvent; impor ...

  7. DevOps 工程师成长日记系列一:必备知识与技能组合

    原文地址:https://medium.com/@devfire/how-to-become-a-devops-engineer-in-six-months-or-less-366097df7737 ...

  8. [b0033] python 归纳 (十八)_队列Queue在多线程中使用(二)

    # -*- coding: UTF-8 -*- """ 多线程同时读队列 使用 join(), task_done() 逻辑: 3个子线程并发 从有6个数据的队列中取数据 ...

  9. TypeScript 学习笔记(三)

    类: 1.TypeScript 是面向对象的 JavaScript,类描述了创建的对象共同的属性和方法 2.类通过关键字 class 声明,使用 extends 关键字进行继承 3.在引用一个类成员时 ...

  10. python获得多个输入值

    我们都知道python的input()函数是以字符串的形式输入的,这就产生了一个问题:当我们在一行内输入多个数值时,input()不会去判断输入元素个数,它只管把这行输入以字符串的形式输入,因此我们要 ...