小兔网

从本篇开始,我们进入 VBA 语法的另外一个重要概念,程序结构。

上一章学习的变量数据类型运算符等概念,是 VBA 中"静态"的部分。相对的,程序结构是 VBA 中 "动态" 的部分。学习完程序结构,才能真正写出可以运行的 VBA 程序。

本篇我们先介绍程序结构最常用的部分,深入学习前有一个基本概念。本章余下的教程中,将详细介绍每一个程序结构。

戳我学习>>知识兔精品课《Office2019零基础入门精通全套大师级课程》

程序结构示例

知识兔

首先,本篇将使用以下代码,介绍各种程序结构,大家可以先看一下。

Sub MyCode()    '声明循环变量和是否为空变量    Dim i As Integer    Dim isBlank As Boolean        '循环 A2-A10 单元格    For i = 2 To 10            '存储单元格是否为空的结果        isBlank = Cells(i, 1).Value = ""                '如果为空,则用上方的单元格的值填充当前单元格        If isBlank Then            Cells(i, 1) = Cells(i - 1, 1)        End If            Next iEnd Sub

以上代码运行后,在 A2:A10 单元格区域,依次判断每一个单元格是否为空,如果是空,则用上一个单元格的值填充。

过程

知识兔

过程是 VBA 中,程序实际运行的最小结构。单独的一行或多行代码无法运行,必须把它们放置在一个过程里,才能运行。

在示例中,Sub 过程名() 开头,End Sub 为结尾部分是一个过程的主题,其余代码需要放置在两者之间。

Sub MyCode()End Sub

程序语句

知识兔

语句,是表示一个完整意思的一行代码。

例如,示例中第一行,声明变量就是一条语句。它表示,声明一个整型变量。同理,第二行、第三行和其余的每一行都是语句。VBA 中的过程,就是由这样一条条语句构成的。

Dim i As IntegerDim isBlank As Boolean

通常,一行就是一个语句,除非它用换行符或合并符号,具体可以阅读「VBA 运算符入门」。

Excel VBA 对象

知识兔

我们学习 VBA 的最终目的是操纵 Excel,完成一些特定的目标。其中,操纵 Excel 就是通过 Excel VBA 对象完成的。

在示例中,Cells() 就是一个 Excel VBA 对象,表示一个单元格,提供行号和列号指定单元格。

程序运行结构

知识兔

接下来是程序结构中最核心的部分,也是最有意思的部分,程序运行结构。大部分编程语言都具备基本的三种程序运行结构,分别是顺序结构、循环结构、判断结构。各种简单到复杂的算法,都是由这三种基本的结构,相互组合而完成。

1.顺序结构

首先是基本的顺序结构。顺序结构,顾名思义就是按照顺序依次执行。VBA 中的顺序就是从上到下、从左到右的顺序。

在示例中,首先运行两个声明语句,然后运行循环结构,以此类推。值得注意的事,当程序有嵌套时,嵌套的部分也是按照顺序指定的。

VBA 顺序结构

2.循环结构

第二个基本结构是循环结构。当使用循环结构时,循环部分代码,按照指定的循环次数,循环重复执行。

在我们的示例中,For 至 Next i 之间的代码就是一个循环代码。

VBA 循环结构

VBA 中,有多种循环结构,本例中是 For 循环结构。For 循环结构中,第一行指定循环次数,最后一行表示开始下一个循环。

'循环开始For i = 2 To 10'这里是循环的代码Next i

3.判断结构

最后一种基本结构是,判断结构。简单来说,该结构中,当提供的表达式为真(True)时,判断结构的主体部分才会被执行,否则跳过。

在示例代码中,If 开头和 End If 结尾处是典型的判断结构。第一行,判断 isBlank 变量是否为真,如果是,则执行判断结构主体部分,否则跳过。

'如果为空,则用上方的单元格的值填充当前单元格If isBlank Then    Cells(i, 1) = Cells(i - 1, 1)End If

判断结构

注释

知识兔

通常,一段代码写完后,不会完全没问题。在实际使用过程中可能需要修改,符合最新的需求。过一段时间再打开查看时,可能已经忘记了当时的思路,不能很快想起来有些代码实际的用途,更不用说让别人查看了。这时,就需要注释出场了。

注释是对代码的一种解释,不影响代码的运行。VBA 中的注释语句是,以英文单引号 (')开头,后接需要解释说明的内容。

VBA 注释

注释可以让代码更容易理解,建议从一开始就养成写注释的习惯。

运行

知识兔

下面,我们实际运行我们的示例代码,看一看它具体的效果。

202106140432194196844

总结

知识兔

现在你学会了基本的 VBA 程序结构。可以运行的最小单位是 VBA 过程,一个 VBA 过程由一个或多个语句组成,每一个语句表示一个完整的含义。VBA 是按顺序结构执行,遇到循环结构和判断结构时,根据提供的参数循环重复执行,或跳过某一段代码。

本章余下教程,将详细介绍以上每一部分。学完本章后,你就可以写出一个完整可运行的 VBA 程序了。