概要

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

分支

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

单条件判断

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

执行后输出:

xxxx

多条件判断

  1. if-elseif-else 结构

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

    输出结果:

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

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

    输出结果:

          不及格
    及格
    良好
    优秀

异常处理

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

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

输出结果:

  发生错误

循环

for-next

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

执行结果:

打印 1 ~ 10 的奇数
1
3
5
7
9

for-each-next

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

执行结果:

打印 1 ~ 10 的奇数
1
3
5
7
9

do-loop-until

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

执行结果:

   打印 1 ~ 10 的奇数
1
3
5
7
9
打印 1 ~ 10 的奇数
1
3
5
7
9

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

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

示例:

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

执行结果如下:

   会运行

do-loop-while

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

执行结果和 until 一样:

   打印 1 ~ 10 的奇数
1
3
5
7
9
打印 1 ~ 10 的奇数
1
3
5
7
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. 一个python问题引发的思考

    问题: pyqt5下开发的时候,遇到了一个这样的问题.Traceback (most recent call last):File “test.py”, line 3, in from PyQt5.Q ...

  2. pycharm问题解析(connecting to console)

    1. 场景描述 以前一直用的anaconda3,临时下载了demo用的python2,就下载anaconda2安装了下,测试过后,发现pycharm中以前的项目跑不起来了,一直报:connecting ...

  3. IT兄弟连 Java语法教程 数据类型转换

    类型转换是将一个值从一种类型更改为另一种类型的过程.例如,可以将String(字符串,字符串是Java中非常特殊的数据类型,字符串属于引用类型,但是可以像基本类型一样使用字面值赋值)类型数据“456” ...

  4. Hbase内存磁盘大致关系

    转自: https://blog.csdn.net/wuwenxiang91322/article/details/51595771 Hbase内存磁盘关系磁盘数 diskNum磁盘容量 diskCa ...

  5. 一些常见的http状态码

    HTTP状态码是服务器和客户端之间交流信息的语言,下面列出一些常见的HTTP状态码. 1XX系列 指定客户端应相应的某些动作,代表请求已被接受,需要继续处理.由于在HTTP/1.0协议中没有定义任何1 ...

  6. 使用zabbix监控oracle的后台日志

    本文将介绍如何使用zabbix监控oracle的后台日志,当oracle后台日志出现“ORA-”或“Error”时,第一时间将该信息报警出来 zabbix agent端 以下所有操作均用root执行 ...

  7. Koa 提交和接收 JSON 表单数据

    来自 url 中的 query 参数可直接通过 context.query 获取,但 POST 方式提交的表单数据则需要借助中间件的解析来完成,比如 koa-bodyparser. 首先准备好一个表单 ...

  8. Redisson实现分布式锁(3)—项目落地实现

    Redisson实现分布式锁(3)-项目落地实现 有关Redisson实现分布式锁前面写了两篇博客作为该项目落地的铺垫. 1.Redisson实现分布式锁(1)---原理 2.Redisson实现分布 ...

  9. Z从壹开始前后端分离【 .NETCore2.1 +Vue 2 +AOP+DI】框架之一 || 前言

    老张 .NetCore与Vue 框架学习目录

  10. python验证码识别(2)极验滑动验证码识别

    目录 一:极验滑动验证码简介 二:极验滑动验证码识别思路 三:极验验证码识别 一:极验滑动验证码简介   近些年来出现了一些新型验证码,不想旧的验证码对人类不友好,但是这种验证码对于代码来说识别难度上 ...