预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共44页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第06章编写SUB过程及开发函数 VBA的主体结构就是过程。VBA包括子过程、函数过程和属性过程三种,本书主要介绍子过程(也称Sub过程)和函数过程(也称Function过程)。 本章要点 认识过程 Sub过程 Function过程 关于过程参数 开发自定义函数 编写函数帮助 认识过程 VBA中每一个程序都包含过程。录制的宏是一个过程,一个自定义函数也是一个过程。掌握好单个过程的编写思路,就可以组合成一个大中型插件或者专业程序。 过程的分类与调用方式 过程主要分为三类:子过程、函数过程和属性过程。这三类过程的格式如下。 Sub子过程() …… EndSub Function函数过程(rngAsRange) …… EndFunction PropertyGet属性过程()AsVariant …… EndProperty 本书主要讲述Sub子过程和Function函数过程的开发。 Sub过程是VBA中应用最广的过程,录制宏所产生的过程就是Sub过程。Sub过程的执行方式包括五种。 1.【Alt+F8】执行 如果在工作表命令窗口、ThisWorkBook命令窗口或者标准模块窗口中存在Sub过程,那么在工作表界面可以通过快捷键【Alt+F8】来执行该过程。 假设在VBE界面中的Sheet1代码窗口中有一个Sub过程“汇总”,在模块1中有一个名为“新建菜单”的Sub过程,那么通过快捷键【Alt+F8】打开“宏”对话框后,将在对话框中产生两个可执行程序名,其中工作表命令窗口的Sub过程会连同工作表名一起出现在宏名列表中,而模块中的过程则仅仅列出过程名。用户选择目标程序并单击【执行】按钮即可启动Sub子过程。 2.快捷键执行 Sub过程可以与某个快捷键进行关联,在后续的使用中就可以利用这个快捷键来调用对应的过程。 设置Sub过程的快捷键主要有两种方式:利用宏对话框设置及用VBA代码指定。后者在本书其他章节将会讲述,在此演示一下“宏”对话框设置宏的快捷键的方法: 假设VB工程中有两个名为“汇总”和“新建菜单”的Sub过程,在工作表界面中按下快捷键【Alt+F8】调出图所示对话框,然后选择“新建菜单”,并单击“选项”按钮,在弹出的“宏选项”对话框中指定快捷键,如图所示。图中设计宏程序“新建菜单”的快捷键是【Ctrl+q】。 图“宏”对话框图设置Sub过程的快捷键 3.按钮执行 在工作表中建一个按钮,并将按钮与Sub过程关联,从而实现单击按钮执行程序。 将按钮关联到Sub过程的步骤为: 1.单击菜单【开发工具】→【表单控件】→【按钮】; 2.在工作表中按下左键并向右下方拖动,从而绘制一个控件按钮; 3.在弹出的对话框中选择“新建菜单”,如图所示; 4.返回工作表后即可单击名为“按钮1”的按钮来执行程序“新建菜单”。 图关联过程与按钮 4.菜单调用 最常见的是编写一个自定义菜单或者工具条来调用Sub过程。菜单与工具条的设计方法参见本书第19章及第20章。 5.事件引发 对于部分需要自启动的程序,通常利用事件引发,不需要人工干预。例如工作簿开启时就自动执行某程序,或者关掉窗体、鼠标移过窗体时执行某程序…… 对于事件过程的运用参见本书第8章。 6.工作表中使用公式调用 Function过程即自定义函数,可以像使用内置的工作表函数一样在公式中使用。 调用Function过程的步骤如下: 1.单击菜单【插入】→【模块】; 2.在模块中录入以下代码: Function成绩(rng) 成绩=IIF(rng>=60,"及格","不及格") EndFunction 3.返回工作表中,在A1输入数值50,在B1输入公式: =成绩(A1) 可以发现公式可以像内置函数一样运行,它返回“不及格”,正是期望的结果。 插入过程的方式 编写过程时可以手工录入代码,也可以让利用VBA提供的列表自动产生程序外壳。 一个Sub过程分为程序外壳部分和主体部分。如图所示。 图Sub过程的外壳与主体部分示意图 其中外壳部分可以手工录入,也可以利用VBE提供的方式完成。 1.非事件过程 对于非事件的Sub过程,VBA提供了一个专用窗体来选择性录入过程的外壳。具体步骤如下: 1.在VBE界面中单击菜单【插入】→【模块】; 2.单击菜单【插入】→【过程】打开“添加过程”对话框; 3.在“名称”框中录入“汇总”,并将“类型”选择“子过程”,将“范围”设为“私有的”,如图所示。然后单击“确定”按钮。 图添加Sub过程外壳图 执行以上程序后在模块中可以看到产生的代码为: PrivateSub汇总() EndSub 如果是Function函数过程,也可以按照上述方法录入过程的外壳。 2.事件类过程 VBA支持很多类事件,大部分事件的代码都需要参数。而这些参数是很难记忆的,包括所有VBA专业程序员。为了快