概要

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

分支

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

单条件判断

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. React: React脚手架

    一.简言 React开发目前已经非常流行,对于如何实现对React项目的管理和维护,React生态圈出现了大量可用的开发工具,例如Browserify.Gulp.Grunt.webpack等.其中,w ...

  2. consolidate.js 一个Node.js 模板引擎的集合

    consolidate是一个模板引擎的结合体.包括了常用的jade和ejs.通过配置我们就可以使用多种模板引擎. consolidate.js安装 npm install consolidate co ...

  3. 为何我建议1-3年的Java程序员仔细看看这篇文章

    此文的目的是为了督促自己去不断学习,让自己有更明确的方向去提升自己.以技能树为基础,以面试要点为大纲,我觉得比抓住什么看什么要更有目的,更能坚持下去.世界瞬息万变,我们要时刻准备着.时刻提高着自己,才 ...

  4. 【转】理解ASP.NET Core验证模型(Claim, ClaimsIdentity, ClaimsPrincipal)不得不读的英文博文

    这篇英文博文是 Andrew Lock 写的 Introduction to Authentication with ASP.NET Core . 以下是简单的阅读笔记: -------------- ...

  5. go-变量

    变量使用注意事项 变量三种声明方式 var i int //使用默认值 var num = 10.2 //类型推导 num := "tom" //左侧不能同名 //多变量声明 nu ...

  6. python中的随机数生成

    结论先行 生成随机数: # salt = ''.join(random.choices(string.ascii_letters + string.digits, k=3)) salt = ''.jo ...

  7. 0基础入门学习Python(第5章)

    列表,元组和字符串 5.1 列表:一个打了激素的数组 有时候可能需要将一些相互之间有关联的数据保存在一起,这个就叫数组.Python将其称为列表. 5.1.1 创建列表 >>> [1 ...

  8. 如何突破DNS报文的512字节限制

    - DNS的512字节限制 根据协议标准,DNS协议同时占用UDP和TCP的53端口,这是为什么呢? 翻阅DNS资料,可以发现,DNS协议默认按UDP传输,为优化传输性能,DNS协议有一个512字节的 ...

  9. kali linux查看局域网下所有IP,并对指定IP实施局域网内攻击(断网,随时查看对方密码,上网痕迹等)

    首先我们打开我们熟悉的kali linux操作系统,利用指令: ifconfig 来确认本机的ip地址 确认了本机的ip地址之后,利用一下的指令查看局域网下所有ip: fping -g 本机IP地址/ ...

  10. win10安装ubuntu系统出现的一些问题以及解决方案

    前言 在win10系统进行安装新的ubuntu环境的时候遇到的一些问题,以及解决方案,供以后参考. 准备 从ubuntu官网下载最近版本的ubuntu系统,Ubuntu最新版本下载地址 操作系统:wi ...