第5章 过程与常用函数
为过程编写代码是VBA编程的主要内容。在VBA中过程分为事件过程和通用过程,通用过程中又分为了子程序和自定义函数,对应过程来说就是Sub过程和Function过程。本章介绍了通过过程的创建方法,并介绍了内置函数功能和使用方法。
5.1 Sub过程概述
在VBA代码中用的最多的过程就是Sub过程,它可以被其他过程所调用,最终完成操作。设置Sub过程的目的不是返回值,而是为了完成一系列操作指令。
5.1.1 Sub过程概述
过程需要经过声明使用,从而明确过程的操作范围。
1. Sub过程结构
Sub过程的完整结构如下所示:
[Private|Public][Static]Sub过程名([参数]) 过程中的代码 [Exit Sub] End Sub
在上述结构中方括号中的内容表示在一定条件下可以省略。
● Private:表示该过程是私有过程,只有位于同一个模块中的其他过程可以调用该过程。
● Public:表示该过程是公有过程,在程序的任何位置都可以调用该过程。在默认情况下,用户输入的过程都是公有过程。使用Public声明过程时,Public可以省略,Public类型的过程是VBA中使用得最多的过程。
● Static:表示在该过程中声明的局部变量都是静态变量,当过程结束后,这些值都会被保留。
● Exit Sub:表示不等到过程执行完毕,就提前退出Sub过程。
2. 建立过程
Sub过程在窗体、工作表、模块以及类模块中都可以建立。但是最常见的是将Sub过程建立在模块中。例如建立一个名为“过程演示”的Sub过程,其具体操作步骤如下所示。
(1)进入VBE编辑器,执行“插入”菜单下的“模块”命令,为程序添加一个模块。
(2)打开“插入”菜单,执行“过程”命令,打开如图5-1所示的“添加过程”对话框,在过程名称中输入“过程演示”,类型选择“子程序”单选按钮,单击“确定”按钮,完成过程名称定义。
图5-1 添加过程
通过执行完“添加过程”后,在代码窗口中显示的内容如图5-2所示。
图5-2 代码窗口内容
不过大多数的时候,用户都不是这样来进行Sub过程定义的,习惯的做法是在模块对应的代码窗口中直接输入。例如同样是建立一个名为“过程演示”的过程,其操作方法是:
(1)删除图5-2所示的代码。
(2)在代码窗口中输入“sub过程演示”,按Enter键即可完成建立“过程演示”的Sub过程。
当用户按Enter键后,系统会自动将默认部分补齐,由于该过程是一个Public类型的,因此Public可以省略。
5.1.2 过程的调用
在程序设计过程中,某些代码可能是可以重复使用的。对于这些代码,最好的方法是将其放置在过程中,在某个时候进行调用,而不是在每个过程中都设计相同或者类似的代码。
过程调用的方法有如下几种:
● 直接写出要调用的过程名称。
● 使用“Call过程名”的方式来调用过程。
● 使用Application.Run "过程名"的方式来调用某一个过程。
例5-01:编写一个“清除工作表内容”过程,过程能够完成的任务就是清除Sheet1工作表中全部内容。然后再新建一个名为“调用过程演示”的过程,调用“清除工作表内容”过程。
#001: Sub清除工作表内容() #002: Sheet1.Cells.Clear #003: End Sub
第2行代码“Sheet1.Cells.Clear”表示要将工作表中的全部内容都予以删除。然后在模块中新建一个名为“调用过程演示”的过程。
#001: Sub调用过程演示() #002: 清除工作表内容 #003: End Sub
第2行代码表示调用了名为“清除工作表内容”的过程。直接执行“清除工作表内容”和执行“调用过程演示”的效果是一致的。
说明
调用过程除了上述方法外,还可以将第2行代码更改为
Call清除工作表内容
Application.Run "工作表内容"
在调用过程的时候,虽然Call是可以省略的,但是加上Call关键字,可以让代码的含义表示得更加的清晰,表示代码在此处调用了其他的过程。
使用Application.Run "过程名"的方式来调用某一个过程,注意过程名要用引号进行引用。