Excel VBA语法与应用手册
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第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 "过程名"的方式来调用某一个过程,注意过程名要用引号进行引用。