欢迎来到天天文库
浏览记录
ID:2087662
大小:849.50 KB
页数:59页
时间:2017-11-14
《《excel vba程序开发自学宝典(第2版)》》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、ExcelVBA程序开发自学(第2版)第06章 编写SUB过程及开发函数VBA的主体结构就是过程。VBA包括子过程、函数过程和属性过程三种,本书主要介绍子过程(也称Sub过程)和函数过程(也称Function过程)。本章要点u认识过程uSub过程uFunction过程u关于过程参数u开发自定义函数u编写函数帮助6.1 认识过程VBA中每一个程序都包含过程。录制的宏是一个过程,一个自定义函数也是一个过程。掌握好单个过程的编写思路,就可以组合成一个大中型插件或者专业程序。6.1.1 过程的分类与调用方式过程主要分为三类:子过程、函数过程和属性过程。这三类过
2、程的格式如下。Sub子过程()……EndSubFunction函数过程(rngAsRange)……EndFunctionPropertyGet属性过程()AsVariant……EndProperty本书主要讲述Sub子过程和Function函数过程的开发。Sub过程是VBA中应用最广的过程,录制宏所产生的过程就是Sub过程。Sub过程的执行方式包括五种。1.【Alt+F8】执行如果在工作表命令窗口、ThisWorkBook命令窗口或者标准模块窗口中存在Sub过程,那么在工作表界面可以通过快捷键【Alt+F8】来执行该过程。假设在VBE界面中的Sheet
3、1代码窗口中有一个Sub过程“汇总”ExcelVBA程序开发自学(第2版),在模块1中有一个名为“新建菜单”的Sub过程,那么通过快捷键【Alt+F8】打开“宏”对话框后,将在对话框中产生两个可执行程序名,其中工作表命令窗口的Sub过程会连同工作表名一起出现在宏名列表中,而模块中的过程则仅仅列出过程名。用户选择目标程序并单击【执行】按钮即可启动Sub子过程。2.快捷键执行Sub过程可以与某个快捷键进行关联,在后续的使用中就可以利用这个快捷键来调用对应的过程。设置Sub过程的快捷键主要有两种方式:利用宏对话框设置及用VBA代码指定。后者在本书其他章节将会
4、讲述,在此演示一下“宏”对话框设置宏的快捷键的方法:假设VB工程中有两个名为“汇总”和“新建菜单”的Sub过程,在工作表界面中按下快捷键【Alt+F8】调出图6.1所示对话框,然后选择“新建菜单”,并单击“选项”按钮,在弹出的“宏选项”对话框中指定快捷键,如图6.2所示。图中设计宏程序“新建菜单”的快捷键是【Ctrl+q】。图6.1“宏”对话框图6.2设置Sub过程的快捷键3.按钮执行在工作表中建一个按钮,并将按钮与Sub过程关联,从而实现单击按钮执行程序。将按钮关联到Sub过程的步骤为:1.单击菜单【开发工具】→【表单控件】→【按钮】;2.在工作表中
5、按下左键并向右下方拖动,从而绘制一个控件按钮;3.在弹出的对话框中选择“新建菜单”,如图6.3所示;4.返回工作表后即可单击名为“按钮1”的按钮来执行程序“新建菜单”。ExcelVBA程序开发自学(第2版)图6.3关联过程与按钮4.菜单调用最常见的是编写一个自定义菜单或者工具条来调用Sub过程。菜单与工具条的设计方法参见本书第19章及第20章。5.事件引发对于部分需要自启动的程序,通常利用事件引发,不需要人工干预。例如工作簿开启时就自动执行某程序,或者关掉窗体、鼠标移过窗体时执行某程序……对于事件过程的运用参见本书第8章。6.工作表中使用公式调用Fun
6、ction过程即自定义函数,可以像使用内置的工作表函数一样在公式中使用。调用Function过程的步骤如下:1.单击菜单【插入】→【模块】;2.在模块中录入以下代码:Function成绩(rng)成绩=IIF(rng>=60,"及格","不及格")EndFunction3.返回工作表中,在A1输入数值50,在B1输入公式:=成绩(A1)可以发现公式可以像内置函数一样运行,它返回“不及格”,正是期望的结果。6.1.2 插入过程的方式编写过程时可以手工录入代码,也可以让利用VBA提供的列表自动产生程序外壳。一个Sub过程分为程序外壳部分和主体部分。如图6.
7、4所示。ExcelVBA程序开发自学(第2版)图6.4Sub过程的外壳与主体部分示意图其中外壳部分可以手工录入,也可以利用VBE提供的方式完成。1.非事件过程对于非事件的Sub过程,VBA提供了一个专用窗体来选择性录入过程的外壳。具体步骤如下:1.在VBE界面中单击菜单【插入】→【模块】;2.单击菜单【插入】→【过程】打开“添加过程”对话框;3.在“名称”框中录入“汇总”,并将“类型”选择“子过程”,将“范围”设为“私有的”,如图6.5所示。然后单击“确定”按钮。图6.5添加Sub过程外壳图执行以上程序后在模块中可以看到产生的代码为:PrivateSu
8、b汇总()EndSub如果是Function函数过程,也可以按照上述方法录入过程的外壳。2.事
此文档下载收益归作者所有