EXCEL_VBA应用教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EXCEL VBA应用教程--第1讲什么是EXCEL VBA
第1讲什么是EXCEL VBA
作者:/landmao
1.1 为什么要学习EXCEL VBA
现在,财务软件已经趋于普及,会计人员的工作效率大幅度提高,减轻了会计人员大工作强度。
财务软件但优点是从数据但输入、处理、输出实现了一体化,在会计数据但利用方面,尽管财务软件一直都作改进,但客观上还是满足不了管理工作但要求。
因此,作实际工作中,EXCEL被大量应用,EXCEL但特点是简单易用,操作灵活,大大地弥补了会计软件地不足。
但是,EXCEL处理数据的缺点是,每一步都要人工操作和控制,对重复性的工作,每次都要重复去作。
EXCEL VBA能够将重复的工作编写成程序,这样就能够提高效率和避免人为操作的错误。
1.2 什么是VBA
VBA(Visual Basic For Applications)是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
VBA是Visual Basic的一个子集,VBA 不同于VB,原因是VBA要求有一个宿主应用程序才能远行(需要在EXCEL等软件的运行下才能运行),而且不能用于创建独立应用程序。
而VB可用于创建独立的应用程序。
VBA可使常用的过程或者进程自动化,可以创建自定义的解决方案,最适用于来定制已有的桌面应用程序。
通常意义上的VBA就是在Office中包含着的一种加强Office功能的Basic 语言。
经过发展,在Office中,Word、Excel、Access、PowerPoint等个软件都有了自己的程序设计语言,分别称为WordBasic、ExcelBasic、AccessBasic、PowerPointBasic (在Outlook中的开发语言为Visual Basic Scripting Edition)。
通常统一称为VBA(VB for Application)。
本讲座,主要基于EXCEL VBA进行讲解。
VBA和VB的区别包括如下几个方面:
(1) VB是设计用于创建标准的应用程序,而VBA是在已有的应用程序(EXCEL 等)下运行,实行有关操作、处理、查询等的自动化,提高效率。
(2)VB具有自己的开发环境,而VBA必须寄生于已有的应用程序(如EXCEL)。
(3)要运行VB开发的应用程序,用户不必安装VB,因为VB开发出的应用程序是可执行文件(*.EXE),可独立运行。
而VBA开发的程序必须依赖于它的"父"应用程序,例如EXCEL,如编写的EXCEL VBA程序,没有安装EXCEL是无法运行的。
虽然一些不同,VBA和VB在结构上仍然十分相似。
如果你已经对VB有一些基础,学习VBA就非常容易。
当掌握EXCEL VBA后,对WORD、ACCESS等中应用VBA创建解决方案,也就基本掌握了。
1.3 应用EXCEL VBA的好处
在EXCEL中,使用VBA可以实现的功能主要包括:
(1)创建报表。
(2)对数据进行复杂的操作和分析。
(3)使重复的工作自动化。
(4)自定义EXCEL工具栏,菜单和界面。
(5)自定义EXCEL,使其成为开发平台。
用EXCEL作为开发平台有如下原因:
(1)EXCEL本身功能强大,包括打印,文件处理,格式化和文本编辑。
大家中在EXCEL使用中已经掌握了EXCEL基本概念、操作方法,采用EXCEL VBA能够更加提高效率,使用者容易接受。
(2)EXCEL内置大量函数和处理功能,通过EXCEL VBA能够高效率地简单应用。
(3)可连接到多种数据库,便于与财务软件等交换数据。
(4)VBA简单易学,容易被会计人员及其管理人员掌握,易于大范围推广应用。
用其他语言开发应用程序,一半的工作是编写一些基本功能的模块,包括文件的打开和保存、处理、打印等。
而用EXCEL作为开发平台,则由于EXCEL已经具备这些基本功能,你要做的工作只是使用它。
1.4 怎样学习EXCEL VBA
掌握EXCEL的人很多,但要在上面编写程序,也是需要学习的。
要学习EXCEL VBA,首先应该购买一本EXCEL VBA的书籍,然后对照上面的案例就行学习和操作。
同时,要根据自己的业务需要,结合实际编写一些实用的小功能。
现在网络上的EXCEL VBA很多,遇到问题,可以通过搜索,一般都能够找到。
通过积累,逐渐就掌握了。
一般需要三个月左右都时间。
本讲座将结合案例,在逐步讲解EXCEL VBA基本知识和方法的基础上,通过实际应用的方式来学习。
EXCEL VBA应用教程--第2讲EXCEL VBA的开发环境和开发过程
第2讲 EXCEL VBA的开发环境和开发过程
作者:/landmao
2.1 什么是VBE
VBE(Visual Basic Editor)是编写VBA代码的工具,窗口结构和VB的编辑器相似。
和VB编辑器不同的是,VBE不能单独打开,必须依附于他所支持的应用程序,如EXCEL。
2.2 启动VBE 环境
在Excel菜单中,选择工具——宏——Visual Basic 编辑器,或者按快捷键Alt+F11即可进入。
安全性设置:要编写VBA程序和运行VBA程序,需要进行“安全性”设置,不然编写当VBA程序无法运行。
在Excel菜单中,选择工具——宏——安全性,进入安全性设置,一般选择“中”,如果不行就选择“低”。
2.3 VBE 的应用
进入VBE编辑器后,就能编写有关低界面后程序。
VBE编辑器主要包括以下部分:
1、代码窗口。
就是在这里写VBA的代码,也是在这里查看代码的。
2、对象窗口。
可以在这里设定窗体的界面(如果使用了窗体的话),在这里能很直观地设定窗体各个控件的布局。
3、对象浏览器。
在这里可以查看所有对象库、特定对象或你自己的工程,包括所有的对象的列表与每个对象的成员列表。
4、工程资源管理器。
在这里,我们可以很方便地管理工程中的模块、类模块与窗体,还可以很容易地在代码与对象间切换。
5、属性窗口。
在这里可以很简单地设定很多对象相关的属性,简单到只要用鼠标选择即可。
6、工具箱。
在插入窗体后,可以从工具箱添加各种控件。
7、立即窗口。
其主要工作是:
(1)在开发过程中,用Debug.Print输出的内容就在此显示。
(2)当代码是Break模式时,查看对象和变量的状态。
(3)用?加上语句,就可以看到运行的结果,在很多情况下比用msgbox报出方便多了。
2.4 使用VBA帮助和寻找资源
1.VBA帮助。
VBA的帮助中包含Excel所有属性、对象、方法等的说明,学习VBA 的过程中,经常查阅VBA帮助,对了解Excel所有属性、对象、方法很有帮助。
在查看别人的代码时,对不熟悉的部分,只要将光标移到其中,再按F1键,就能快速查获到相关的帮助。
我们还可以在帮助的应答向导中,键入相关的关键词,来查找我们需要的内容。
2.网络的搜索。
网络的好处就在于信息量之巨大,而要查找到我们需要的信息时,最基本的就是用好搜索。
通过如百度、Google等,只要键入合适用的关键词,就能找出不少相关的信息。
2.5 EXCEL VBA的开发过程
1. EXCELVBA开发过程简介
在开发一个具体的业务程序时,需要对以下问题有个大致的考虑。
1)使用者。
这决定了程序的操作难度及界面感观。
2)数据来源和保存在哪里。
这决定了程序的结构。
3)如何操作。
这将决定程序的界面和细节。
4)数据处理的结果。
最终决定程序的价值。
2.认识不同的控件
开始时关闭所有工作簿,打开一个新工作簿并另存为一个具体名字,一般用项目名称。
在工具栏上单击鼠标右键,从快捷菜单中选择"窗体",显示"窗体"工具栏.其中有16个控件,只有9个可放到工作表内。
1)标签:它用于表现静态文本。
2)分组框:它用于将其他控件进行组合。
3)按钮:用于执行宏命令。
4)复选框:它是一个选择控件,通过单击可以选择和取消选择,可以多项选择。
5)选项按钮:通常几个选项按钮组合在一起使用,在一组中只能选择一个选项按钮。
6)列表框:用于显示多个选项并从中选择。
只能单选。
7)组合框:用于显示多个选项并从中选择。
可以选择其中的项目或者输入一个其它值。
8)滚动条:不是你常见的来给很长的窗体添加滚动能力的控件,而是一种选择机制。
例如调节过渡色的滚动条控件。
包括水平滚动条和垂直滚动条。
9)微调控件:也是一种数值选择机制,通过单击控件的箭头来选择数值。
例如改变Windows日期或时间就会使用到微调控件。
3.向工作表添加控件
4.设置控件的特性
5.给控件命名
6.使用用户窗体
如果希望创建专业级的应用程序,并且方便用户输入数据,那么应该使用用户窗体。
用户窗体可以作为程序的对话框和窗口.向用户窗体添加控件基本类似于向工作表添加控件。
在对用户窗体设计完成后,可以对其进行预览,方法是在VBA编辑器中选择该窗体,单击“运行”菜单中的三角符号“运行子过程/用户窗体”,三角符号在VBA工具栏上也可能看得到,旁边是一个垂直的等于符号,最右边是个小正方形符号,它们类似于录音机上的按钮。
运行窗体的另一个方法是按F5键。
EXCEL VBA应用教程--第3讲常量、变量与数据类型(一)
第3讲常量、变量与数据类型
作者:/landmao
数据是程序运行的基础,在EXCEL VBA中,大量的数据是中EXCEL中的,但在程序运行中,还会有一些程序的控制数据。
要掌握一种程序语言,必须了解该语言的数据类型有哪些以及该数据是如何声明的,以便得知该数据是使用哪种数据类型、该数据所能允许使用得最大和最小范围(生存期)、以及该数据占用多少内存空间。
这样程序执行时才不会发生数据溢出(Overflow)和浪费内存空间得现象。
执行程序时,必须先将程序和数据加载到计算机的内存(RAM)中才能执行,若该数据会随着程序的执行而更改其值,我们称之为变量(Variable),而不发生变化的则时常量。
常量指的时数据类型特定值的文字表示,常量被用来指定给变量当作变量值。
程序运行时,语句中的每一个常量,都会分配到内存空间来存放其值。
3.1 标识符
变量和常量需要用一个名称来标识,这就是标识符。
标识符名称第一个字符允许以大小字母、_或者中文名称(一般不建议用中文名称)开头,后面的字符可接A~Z、a~z、0~9或_等字符。
3.2 保留字
保留字又称关键词(Keyword),是程序语言中事先赋予某个标识符的一个特别意义,因此就不得再重复赋予不同的用途。
其用法又一定的规范,在编写程序时,这些保留字若出现在程序中的语句时会以蓝色标示,以提醒用户这些标识符是属于系统保留字不可误用。
这后面的内容中,我们逐步学习涉及到的相关保留字,如if、then等等。
3.3 常量
所谓“常量”是指数据类型特定值的文字表示。
常量被用来指定给变量当作变量值。
程序运行时,语句中的每一个常量,都会分配到内存的空间来存放其值。
3.3.1 整数常量
整数常量由数字、+(正)、—(负)所组成。
整数常量的表示方式由:二进制、八进制、十进制、十六进制。
十进制整数常量是一串十进制数,十六进制常量是&H后面跟着一串十六进制数字(0~9、A~F),八进制常量则是&O(O 为字母)后面跟着一串八进制数字(0~7)。
十进制常量直接以阿拉伯数字(0~9)来表示,二八进制常量和十六进制常量则以二进制数表示整数常量。
常量的类型是由其值或是接在其后的数据类型字符来决定。
如果未指定数据类型字符,则在Integer类型范围内的值会采用Integer整数数据类型;超出Integer范围大小的值则采用Long长整数数据类型。
由于一般人比较习惯十进制数,本书所用的数值常量,大都采用十进制数表示。
3.3.2 浮点常量
浮点常量是整数常量后面跟着选择性的小数点和尾数,以及选择性的基底为10的指数。
默认浮点常量是属于Double数据类型。
如果指定Single、Double和Decimal数据类型字符,则常量就属于该数据类型。
数据常量的各数据类型所占的内存空间与可表示的大小范围如表所示。
字符串常量由一连串的字符组合而成,包括中文、英文字母、空格、数字、特殊符号。
字符串常量可细分成:Char(字符)数据类型和String(字符串)数据类型,其所占的内存空间和允许的范围大小如表所示。
3.3.4 布尔常量
布尔常量只有两个值,一个为“True”、另一个为“False”,分别表示真与假、开与关、Yes与No等两种状态。
Boolean数据类型常被使用在关系表达式及逻辑表达式条件式中,用来判断条件成立与否。
第3讲常量、变量与数据类型(二)
3.3.5 日期常量
日期常量代表以Date数据类型的值所表示的特定时间。
常量可同时指定日期和时间、仅指定日期或仅指定时间。
设为12:00:00 AM。
例:
#11:20:00 PM# (仅指定时间)
#9/9/2004# (仅指定日期)
#9/9/2004 12:45:00 PM# (同时指定日期及时间)
3.3.6 variant
Variant字符串类型的存储空间为22字节加上字符串的长度,其取值范围与变长字符串数据类型的取值范围相同,缺省值为Empty。
Variant数字型的存储空间为16字节,其取值范围与Double数据类型的取值范围相同,缺省值为Empty。
3.4 变量和数据类型
为了要避免变量占用太多的内存空间,VBA视数据的大小与数据种类尔给予不同的数据类型。
将变量分成数值、字符串、布尔、日期等类型。
各种数据类型所占用的字节(Byte)不相同。
使用变量的第一步是了解变量的数据类型.变量的数据类型控制变量允许保存何种类型的数据,各种类型的变量所需要的存储空间和能够存储的数值范围.
第3讲常量、变量与数据类型(三)
VBA数据类型表
数据类型存储空间数值范围
Byte1字节0 - 255
Booleam2字节True或者False
Integer2字节-32768 - 32767
Long(长整型)4字节-2147483648 - 2147483647
Single4字节负值范围:-3.402823E38 - -1.401298E-45正值范围:1.401298E-45 - 3.402823E38
Double8字节负值范围:-1.79769313486232E308 - -494065645841247E-324正值范围:4.94065645841247E-324 - 1.79769313486232E308
Currency8字节-922337203685477 - 922337203685477
Decimal14字节不包括小数时:+/-79228162514264337593543950335 包括小数时:+/7.9228162514264337593543950335
Date8字节1000年1月1日- 9999年12月31日
Object4字节任何引用对象
String(长字符串)10字节+1字节/字符0 - 约20亿
String(固定长度)字符串的长度 1 - 约65400
Varient(数字)16字节Double范围内的任何数值
Varient(文本)22字节+1字节/字符数据范围和变长字符串相同
3.5 变量的声明方式
在程序中,要使用变量,必须先使用Dim声明确定其数据类型,若在声明时未设置其初值,数值变量默认为0、字符串变量默认为空字符串。
使用Dim声明变量的方式如下:
Dim sum As Integer 声明sum为整型变量,初值默认为0
Dim string1,string2 As String 同时声明string1、string2为字符串类型变量初值空字符串
Dim cost As Integer =50 声明cost为整型变量,并设初值为50
第4讲运算符(一)
第4讲运算符
作者:/landmao
运算符(Operator)用来指定数据做何种运算。
运算符按照运算时所需要的操作数(Operand)数目分成:单元运算符(Unary Operator),如:﹣9;二元运算符(Binary Operator),如a+b为一个加法表达式(Expression),其中a、b为操作数,加号为运算符,由于加号运算符在运算是需要两个操作数,因此称为二元运算符。
4.1 算术运算符
算术运算符是用来执行一般的数学运算,如:加、减、乘、除和取余数等运算。
4.2 关系运算符
关系表达式的功能式用来比较字符串或数值的大小。
关系表达式经过运算后,其结果可以为真(True)或为假(False),通过其结果来决定程序的执行流程。
关系运算符与关系表达式
关系运算符意义数学式关系表达式= =相等A=B A= =B
<> 不相等A≠B A<>B
> 大于A>B A>B
< 小于A<B A<B
>=大于或等于A≧B A>=B
<=小于或等于A≤B A<=B
Like按样式比较字符串字符串Like样式
Is比较对象对象A Is对象B TypeOf…Is测试对象数据类型If(TypeOf对象Is)Then Like子句样式用法如下所示:
Dim chksign As Boolean
chksign = “A” Like “A”…True
chksign = “a” Like “A”…False
chkFlag = “A” Like “AAA”…False
第4讲运算符(二)
4.3 逻辑表达式
逻辑表达式用来测试比较复杂的条件,一般都用来连接多个关系表达式。
如:使用age变量当年龄,若条件为:10<age≤30(大于10岁且小于30岁),其逻辑表达式的写法如下:
If(age>10)And (age<=30) then
其中(age>10)和(age<=30)两者为关系表达式,两者间利用And逻辑运算符来连接。
同样,逻辑表达式的运算结果只有真(True)或假(False)。
逻辑表达式主要有两种类型的表达方式:
And、Or、Not、XOR逻辑运算符
AndAlso/OrElse逻辑运算符
例如,若a值为6,求下列逻辑运算后的结果:
(a>1) And (a<=10) …检查1<a≤10,结果为True
(a<1) Or (a>=5) …检查a是否小于大于5,结果为True
4.4 赋值运算符与复合赋值运算符
当需要指定某个变量的值、将某个变量或某个表达式的结果指定给某个变量时,就必须使用赋值运算符来完成。
赋值运算符是以符号(=)来表示。
第5讲流程控制语句
第5讲流程控制语句
作者:/landmao
一个程序的流程,都是由顺序结构、选择结构和循环结构三者组合而成。
顺序结构的特点是语句由上而下逐行地执行。
选择结构是当程序执行时,欲改变程序执行的顺序时使用。
循环结构俗称重复,当程序中有某个语句块需要循环执行时使用。
因此,设计一个具有结构化的程序,除了必须具有清晰的逻辑分析能力外,要使用以上所述的三种结构来实现。
5.1 If语句
“选择结构”指当程序执行时,需要改变执行的流程时,则必须使用条件来做判断,若满足条件(即结果为True)则执行某个语句段,若不满足条件(即结果为False)则执行另一个语句段。
1.If…Then…Else语句
在设计程序时,常会碰到“如果…那么…”或时“如果…那么…否则…”的情况,这种情况便要使用If…Then…或是If…Then…Else…语句来完成。
由下面语法可知,若满足条件就执行“Then语句块”,不满足条件n就执行“Else语句块”。
其中条件可为关系表达式或多个关系表达式中用逻辑表达式连接的混合表达式,其语法形式如下所示:
If (条件 ) Then [Then 语句块]
Else [Else 语句块]
End If
2.If…Then…ElseIf语句
设计程序时,若碰到“如果…那么…否则如果…那么…否则”,便需使用If…Then…Elseif…Then…Else…语句来完成。
如下面语法,若条件1的结果为True,则执行“Then语句块1”,接着继续执行EndIf后面的语句;若条件1
的结果为False,则检查条件2的结果,若为True则执行“ElseIf语句块2”,接着继续执行EndIf后面的语句。
一直到所有结果的条件都不满足时,才执行Else后面的“Else语句块”。
其语法如下所示:
If (条件1) Then [Then语句块1]
ElseIf (条件2) Then [ElseIf语句块2]
ElseIf (条件3) Then [ElseIf语句块3]
…
ElseIf [ElseIf语句块]
Eed If
5.2 Select Case选择语句
程序设计时若碰到多向选择时,当然可使用If…Then…ElseIf或嵌套的If…Then…Else来完成,但是太多的If会使得程序的复杂度提高,造成不易阅读且难维护;若改用下面的Select Case语句,程序不但看起来简洁而且易维护。
如下面语法,若表达式的结果满足value1,则执行“Value1语句块”,再继续执行End Select后面的语句;若表达式的结果不满足value1,满足value2,,则执行“Value2语句块”,依次类推;若都不满足所设置的Case value值,便执行“Value2语句块”Else语句块后,再继续执行End Select后的语句。
其语法形式如下:
Select Case 表达式
Case value1
[value1语句块]
…
Case value2
[walue2语句块]
End Select
表达式可以为变量、数值或字符串表达式,但要注意Case子句中的value必须和表达式的数据类型一致。
5.3 IIf选择语句
IIf式一个双重选择函数,如下面语法,若表达式的结果为True,则返回V1。
否则返回V2。
返回值可以为数值、字符串或表达式。
IIf函数里面若还有IIF
函数就构成嵌套选择结构。
其语法形式如下所示:
IIf(表达式,V1,V2)
5.4 循环语句
当程序执行时,需要将某个语句块执行多次时,便需要使用“循环结构”。
按照循环执行次数确定是否分成For…Next语句(每次执行循环次数确定)和Do…语句(次数由当时条件决定)两大类。
1.For…Next语句
程序设计时,若希望由某个值开始,每执行指定的语句块一次,便将该数值增(减)一值,若结果比终值还小(大),便继续执行该语句块,直到不满足终值才离开该语句块,如重复显示某个数字10次、连续输入数据到数组等都必须使用下面语法来完成:
For counter = start To end [Step Increment]
语句块
[Exit For ]
语句块
Next For
若start<end ,则Increment为正。
若Increment=1则Step参数可以省略。
若start>end则Step不能省略,且Increment为负值。
Start和end参数可以为小数。
2.For Each…Next语句
For Each…Next语句和For…Next功能一样,当满足条件时,会将For…Next 间的语句执行一次,直到不能满足条件为止。
如下面语法,当group(指对象的集合或数组)内至少有一个元素,就能进入For Each…Next循环。
一旦进入循环,便会针对group内的第一个元素来执行语句块一次;若group内有更多元素,则循环内的语句块就会针对每个元素来继续执行。
当各元素都执行一次后,循环便结束,继续执行Next语句后面的语句。
其语法形式如下所示:
For Each element In group
语句块
[Exit For]
[语句块]
Next element
其中element为必要项,是一个变量名称,用来在集合或数组的每个元素中重复。
Element的数据类型必须是group中元素的数据类型。
group为必要项,是一个对象变量,必须引用对象集合或数组statement为一选择项,介于For Each…Nex 之间的一行或数行语句,在group内的每个项目发生时执行一次。
3.Do While…Loop语句
设计程序时,当希望条件为True时才进入循环,执行循环内的语句块,直到碰到Loop再回到Do While,检查是否满足条件,若满足条件继续执行循环内的语句块,直到不满足才跳离循环继续执行Loop后面的语句。
因此,循环内必须有语句将条件变为False,否则会变成无穷循环而无法跳出。
若想中途离开循环可在要离开的地方插入Exit Do即可。
Do While(条件)
…
[Exit Do]
…
Loop
4.Do Until…Loop语句
此语句和Do While…Loop语句都属于前测试循环,两者使用上的差异在于,若不满足条件才进入循环时,必须使用Do Until…Loop;若满足条件才进入循环时,才使用Do While…Loop。
其语法形式如下:
Do Until (条件)
语句块
[Exit Do]
语句块
Loop
5. Do…Loop While语句
程序中使用循环时,若需要第1次进入循环时不必检查是否满足条件,而直接进入循环,第2 次以后才需要检查是否满足条件,当条件条件为True时,才能再进入循环执行,此时便需要使用Do…Loop While语句。
因此此种情况,循环至少执行一次,是属于后测试循环。
其语法形式如下:
Do
语句块
[Exit Do]
语句块
Loop While(条件)
6. Do…Loop Until语句
此语句和Do…LoopUntil语句都属于后测试循环,两者使用上的差异在于,若不满足条件才进入循环时,必须使用Do…Loop Until。
若满足条件才进入循环时必须使用Do…Loop While。
其语法形式如下:
Do
语句块
[Exit Do]
语句块
Loop Until(条件)
在实际应用中,前三种应用会多一些,通过具体多设置,一般都能达到目的。
因此,要把前三种掌握好。
第6讲函数
第6讲函数
作者:/landmao
6.1 函数概述
函数(function)是能完成特定任务的相关语句和表达式的集合。
当函数执行完毕时,它会向调用它的语句返回一个值。
如果不显示指定函数的返回值类型,就返回缺省的数据类型值。
1.Sub函数
Sub函数是以Sub…End Sub语句封闭起来的程序块。
每当该函数被调用时,就会将存放在函数块内的语句执行一次。
执行中若碰到End Sub 、Exit Sub 或Return便离开函数,回到调用此函数的下一个语句继续望下执行。
编写程序时,在模块、对象类模块和结构中定义Sub函数。
模块内的Sub函数都默认为Public,表示可以从应用程序任何位置调用此Sub函数。
除了Main函数外,其他函数是在被调用才执行。
Sub函数定义的语法如下:
[Private∣Public]Sub函数名称([参数类表])
[程序块]
[Exit Sub]
End Sub
Sub函数是以Public Sub或Private Sub开头,最后以End Sub结束。
当执行到End Sub后即返回紧接再原调用处的下一个语句继续往下执行。
若中途要离开函数,可使用Exit Sub语句。
调用Sub函数的语法有下列两种方式:
语法1:Call函数名称([参数列表])
语法2:函数名称([参数列表])
调用程序与被调用程序之间若无数据传递,参数列表可省略(即不传任何参数);若不省略,参数列表的数目可以是一个或一个以上的参数。
2.Function函数
除系统提供的内置函数外,还提供了日期、时间、字符串等函数,另外还可以使用Function…End Function函数来编写属于自己的Function函数。
Sub函数和Function函数两者都可以做参数传递,但两者使用上的主要差异是Sub函数没有返回值,Function函数则有返回值。
有关Function函数的语法如下:
[Public∣P rivate] Function函数名称([参数列表]) [As数据类型]
[语句块]
函数名=表达式
[Exit Function]
或(Return表达式)。