60_VBA 程序结构入门

如果看到这,应该给自己点个赞!因为我们马上就要动手写代码了!一些原来需要鼠标和键盘要来的一些事,用代码来实现,是不是更酷呢!!!!

在进入实质性的VBA开发之前, 有必要了解VBA的程序结构。VBA程序包含子过程、函数过程和属性过程。

1. 子过程的结构

一个完整的子过程由作用范围,变量的生命周期,过程声明语句,参数,命令,中断过程语句,结束语句和注释8个部分组成,而录制宏时产生的代码不可能包含这8个组成部分,因此如果仅仅停留在录制宏阶段,是无法了解子过程的完整结构的。

1.1认识程序结构

带有方括号“[]”的部分表示是可选项,在编程时允许忽略。

例如用于中断过程的代码Exit Sub就是可选项,程序执行过程中可以有条件地中断过程,也可以不中断过程;过程的 参数"arglist”也是可选项,可以根据需求决定是否使用参数。

带有"|"的部分表示是并列项, 例如Private、 Public与Friend之间属于并列关系,三者不能同时存在,只能根据需求任选-种。同时又由于它是可选项,因此三者都可以忽略。

剔除可选项后,子过程的简写模式如下:



在实际工作中, 用得最多的都是简写结构的过程。

1.2 为VBA程序添加注释

为程序添加注释有两个目的。其一是说明程序的功能,版号,作者,更新时间,更新内容之类,也可以是程序的思路说明i 其二是为某一行代码添加代码的含义说明。

代码注释默认显示为绿色, 代码颜色为黑色, 两者形成反差, 从而便于识别。

添加注释有两种方法。 其一是先写 "Rem" 加一个空格,然后写入注释内容,VBA在执行代 码时只要检测到"Rem"就自动忽略该行; 其二是先写一个半角状态的单引号"'", 然后再追加注释内容。

如下图,分别使用了两种方式为程序添加注释,在注释中既有程序的功能说明,也有每旬代码的含义注释, 从而给他人查看代码提供方便。

代码注释不是必需的,但是很有必要完善代码的注释,这样既给他人提供方便,也给自己维护代码提供方便。因为VBA开发者都不是专业程序员,当几个月不用VBA后再回来查看代码可能会连自己写的代码也无法理清思路,鉴于此,代码的注释显得格外重要。

2.过程的命名规则

对过程命名需要遵循以下规则。

( 1 )第一个字符必须使用英文字母或者汉字, 禁止用数字开头。

( 2 )不能使用空格、 句号、 感叹号、 @\&\乱 ,、#等标点符号。

( 3 )名称的长度不能超过255个字符。

( 4 )过程名称不宜与模块同名, 否则跨模块调用该过程时必须同时书写模块名称和过程名称,当采用与其他过程一样的调用方式时无法调用成功。

( 5 )不能与同一个模块申的其他任意过程同名,但允许与不同模块中的过程同名。

( 6 )不能与VBA的保留字一致。 例如Dim 、 Sub、 End 、 as和Exit等都是保留字。

此外, 过程名称不区分字母大小写, 命名为A时? 也可以用代码 “Call a”来调用。

3.过程的参数

过程允许携带参数,有参数的过程比无参数的过程更强大、灵活。在编写比较大型的程序时会 用到带参数的过程。

不过带有参数的过程在编写和应用上都比较复杂,当前阶段,暂时略过。

4.过程的执行流程

一个复杂的过程可能会有几百行代码。在执行程序时遵循从上到下、从左到右的顺序。不过VBA也提供了改变程序流程的诸多方法,可让程序随时更改执行顺序。

4.1正常的执行流程

VBA的程序执行流程是自上而下,从左到右的。

4.2改变程序的执行流程

VBA提供了条件语句和Goto语句来改变程序的执行流程。

5.中断过程

执行过程时,VBA会按预设的顺序连续地执行代码, 直到遇到暂停语旬或者终止过程的代码。

5.1结束过程: End Sub

End Sub属于程序外壳的组成部分,它标志着程序结束, 处于过程的末端。 当VBA遇到此句 代码时会自动结束过程。

5.2中途结束过程: Exit sub

Exit Sub语句用于中途结束过程,可以在一个过程中存放任意数量的Exit Sub,不过在执行代码时中要遇到第一个Exit Sub语句就会结束过程,完全忽略其他的Exit Sub语句。

5.3中途结束一切:End

End语句具有Exit Sub语旬的功能, 可以中途结束过程。 不过它比EndSub语旬的功能强大得多,它不仅可以结束过程,甚至可以结束 切,包括清除所有公共变量的值,关闭当前窗体(假 设End语旬在窗体中)。

基于以上原因,End语旬不能随意使用,它可能会带来破坏性的后果,致使其他程序无法正常足行。

5.4暂停过程: Stop

Stop 语句用于中途暂停过程, 当程序执行过程中遇到Stop语旬时会自动暂停, 再次接<F5>键时则继续执行后面的代码。 一个过程中允许存放多个Stop语旬。

下边先用一个最简单的示例来说明程序结构,大家可能理解起来更快一些。有些内容不理解,可以暂时略过,随着自己去编写每一个功能,慢慢就会理解的,不要纠结现在。

程序结构示例

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



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

过程

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

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



程序语句

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

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



Excel VBA 对象

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

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

程序运行结构

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

1.顺序结构

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

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

2.循环结构

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

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

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



3.判断结构

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

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

注释

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

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



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

运行

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

原如数据:

总结

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

展开阅读全文

页面更新:2024-02-25

标签:结构   程序   示例   注释   语句   顺序   入门   参数   过程   结束   代码

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top