概要

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

分支

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

单条件判断

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组件知识中,对于组件的创建我只是用了其中某一种方式.其实,在2013年React诞生之初,对于React组件的创建,仅仅只有一种方式,也即createClass函数,在 ...

  2. python文件操作【目录大全】

    总是记不住API.昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Pyth ...

  3. 蓝牙Inquriy 过程详解

    问题 今天遇到了一个问题,就是自己的耳机产品,手机经常搜不到,从日志里面查看,发现原因是平时手机蓝牙发送的是inquiry mode =2 出问题的时候,inquiry mode =1 由于本设备很多 ...

  4. linux与ubuntu下vsftp的安装使用

    vsftp工具是linux与类linux系统上常用的ftp传输工具,按百度上的说法,它的不同点与好处有九点,不明觉厉,有兴趣的可以深入验证: 一.它是一个安全.高速.稳定的FTP服务器: 二.它可以做 ...

  5. IT兄弟连 Java语法教程 流程控制语句 分支结构语句3

    3  if-else if-else条件语句 if-else if-else的完整形式如下: if(判断条件A){ A语句块(判断条件A的值为true,执行) }else if(判断条件B){ B语句 ...

  6. 关于Unity中AI随机巡逻障碍物预判与快速运动时物理穿透的思考

    如果不想用Unity的导航系统,很多时候就要解决如何预判前进路径中的障碍物问题,之前也看过一些非常经典的寻路算法例如AStar寻路,虽然也可实现功能,但总感觉有些小题大做.寻路算法大多数都是为了得出最 ...

  7. 100道MySQL常见面试题总结,看完直接收藏

    前言 本文主要受众为开发人员,所以不涉及到MySQL的服务部署等操作,且内容较多,大家准备好耐心和瓜子矿泉水. 前一阵系统的学习了一下MySQL,也有一些实际操作经验,偶然看到一篇和MySQL相关的面 ...

  8. Idea-搜索快捷键

    1.Ctrl+N按名字搜索类 相当于eclipse的ctrl+shift+R,输入类名可以定位到这个类文件,就像idea在其它的搜索部分的表现一样,搜索类名也能对你所要搜索的内容多个部分进行匹配,而且 ...

  9. 爬取bilibili首页菜单获取li内容

    代码: import requests from bs4 import BeautifulSoup def html_save(s): with open('哔哩哔哩.csv','a')as f: f ...

  10. C# Mutex to make sure only one unique application instance started

    static void MutexDemo2() { string assName = Assembly.GetEntryAssembly().FullName; bool createdNew; u ...