EXCELVBA应用教程.docx
《EXCELVBA应用教程.docx》由会员分享,可在线阅读,更多相关《EXCELVBA应用教程.docx(50页珍藏版)》请在冰豆网上搜索。
EXCELVBA应用教程
EXCELVBA应用教程--第1讲什么是EXCELVBA
第1讲什么是EXCELVBA
作者:
1.1为什么要学习EXCELVBA
现在,财务软件已经趋于普及,会计人员的工作效率大幅度提高,减轻了会计人员大工作强度。
财务软件但优点是从数据但输入、处理、输出实现了一体化,在会计数据但利用方面,尽管财务软件一直都作改进,但客观上还是满足不了管理工作但要求。
因此,作实际工作中,EXCEL被大量应用,EXCEL但特点是简单易用,操作灵活,大大地弥补了会计软件地不足。
但是,EXCEL处理数据的缺点是,每一步都要人工操作和控制,对重复性的工作,每次都要重复去作。
EXCELVBA能够将重复的工作编写成程序,这样就能够提高效率和避免人为操作的错误。
1.2什么是VBA
VBA(VisualBasicForApplications)是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
VBA是VisualBasic的一个子集,VBA不同于VB,原因是VBA要求有一个宿主应用程序才能远行(需要在EXCEL等软件的运行下才能运行),而且不能用于创建独立应用程序。
而VB可用于创建独立的应用程序。
VBA可使常用的过程或者进程自动化,可以创建自定义的解决方案,最适用于来定制已有的桌面应用程序。
通常意义上的VBA就是在Office中包含着的一种加强Office功能的Basic语言。
经过发展,在Office中,Word、Excel、Access、PowerPoint等个软件都有了自己的程序设计语言,分别称为WordBasic、ExcelBasic、AccessBasic、PowerPointBasic(在Outlook中的开发语言为VisualBasicScriptingEdition)。
通常统一称为VBA(VBforApplication)。
本讲座,主要基于EXCELVBA进行讲解。
VBA和VB的区别包括如下几个方面:
(1)VB是设计用于创建标准的应用程序,而VBA是在已有的应用程序(EXCEL等)下运行,实行有关操作、处理、查询等的自动化,提高效率。
(2)VB具有自己的开发环境,而VBA必须寄生于已有的应用程序(如EXCEL)。
(3)要运行VB开发的应用程序,用户不必安装VB,因为VB开发出的应用程序是可执行文件(*.EXE),可独立运行。
而VBA开发的程序必须依赖于它的"父"应用程序,例如EXCEL,如编写的EXCELVBA程序,没有安装EXCEL是无法运行的。
虽然一些不同,VBA和VB在结构上仍然十分相似。
如果你已经对VB有一些基础,学习VBA就非常容易。
当掌握EXCELVBA后,对WORD、ACCESS等中应用VBA创建解决方案,也就基本掌握了。
1.3应用EXCELVBA的好处
在EXCEL中,使用VBA可以实现的功能主要包括:
(1)创建报表。
(2)对数据进行复杂的操作和分析。
(3)使重复的工作自动化。
(4)自定义EXCEL工具栏,菜单和界面。
(5)自定义EXCEL,使其成为开发平台。
用EXCEL作为开发平台有如下原因:
(1)EXCEL本身功能强大,包括打印,文件处理,格式化和文本编辑。
大家中在EXCEL使用中已经掌握了EXCEL基本概念、操作方法,采用EXCELVBA能够更加提高效率,使用者容易接受。
(2)EXCEL内置大量函数和处理功能,通过EXCELVBA能够高效率地简单应用。
(3)可连接到多种数据库,便于与财务软件等交换数据。
(4)VBA简单易学,容易被会计人员及其管理人员掌握,易于大范围推广应用。
用其他语言开发应用程序,一半的工作是编写一些基本功能的模块,包括文件的打开和保存、处理、打印等。
而用EXCEL作为开发平台,则由于EXCEL已经具备这些基本功能,你要做的工作只是使用它。
1.4怎样学习EXCELVBA
掌握EXCEL的人很多,但要在上面编写程序,也是需要学习的。
要学习EXCELVBA,首先应该购买一本EXCELVBA的书籍,然后对照上面的案例就行学习和操作。
同时,要根据自己的业务需要,结合实际编写一些实用的小功能。
现在网络上的EXCELVBA很多,遇到问题,可以通过搜索,一般都能够找到。
通过积累,逐渐就掌握了。
一般需要三个月左右都时间。
本讲座将结合案例,在逐步讲解EXCELVBA基本知识和方法的基础上,通过实际应用的方式来学习。
EXCELVBA应用教程--第2讲EXCELVBA的开发环境和开发过程
第2讲EXCELVBA的开发环境和开发过程
作者:
2.1什么是VBE
VBE(VisualBasicEditor)是编写VBA代码的工具,窗口结构和VB的编辑器相似。
和VB编辑器不同的是,VBE不能单独打开,必须依附于他所支持的应用程序,如EXCEL。
2.2启动VBE环境
在Excel菜单中,选择工具——宏——VisualBasic编辑器,或者按快捷键Alt+F11即可进入。
安全性设置:
要编写VBA程序和运行VBA程序,需要进行“安全性”设置,不然编写当VBA程序无法运行。
在Excel菜单中,选择工具——宏——安全性,进入安全性设置,一般选择“中”,如果不行就选择“低”。
2.3VBE的应用
进入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.网络的搜索。
网络的好处就在于信息量之巨大,而要查找到我们需要的信息时,最基本的就是用好搜索。
通过如XX、Google等,只要键入合适用的关键词,就能找出不少相关的信息。
2.5EXCELVBA的开发过程
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键。
EXCELVBA应用教程--第3讲常量、变量与数据类型
(一)
第3讲 常量、变量与数据类型
作者:
数据是程序运行的基础,在EXCELVBA中,大量的数据是中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数据类型字符,则常量就属于该数据类型。
数据常量的各数据类型所占的内存空间与可表示的大小范围如表所示。
浮点常量
数据类型
内存
范围
Byte(字节)
1Byte
0~255的整数(这种数据类型占用的内存空间最少)
Short(短整数)
2Bytes
-32768~32767的整数
Integer(整数)
4Bytes
-2147483648~2147483647的整数(约有10位数的正负整数)
Long(长整数)
8Bytes
-9223372036854775808~9223372036854775808的整数(约有19位的正负整数)
Single(单精度)
4Bytes
正数:
1.401298×E-45~3.402823×E+38
负数:
-3.402823×E+38~-1.401298×E-45
(有效位数为7位,可以表示小数)
Double(双精度)
8Bytes
正数:
4.94065645841247×E-324~1.79769313486231×E+308
负数:
-1.79769313486231×E+308~-4.94065645841247×E-324
(有效位数为15位,可以表示小数)
Decimal(货币类型)
16Bytes
整数范围:
+/﹣79228162514264337593543950335
浮点数范围:
+/﹣7.9228162514264337593543950335
最小非零值范围:
+/﹣0.0000000000000000000000000001
(有效位数为29位,可以表示小数)
3.3.3字符串常量
字符串常量由一连串的字符组合而成,包括中文、英文字母、空格、数字、特殊符号。
字符串常量可细分成:
Char(字符)数据类型和String(字符串)数据类型,其所占的内存空间和允许的范围大小如表所示。
字符串常量
数据类型
内存
范围
Char(字符)
2Byte
0~65535的整数,为Unicode码(每一个码代表一个字符)
String(字符串)
变动长度
0~20亿个Unicode字符
字符串常量必须使用“””双引号头尾括起来。
3.3.4布尔常量
布尔常量只有两个值,一个为“True”、另一个为“False”,分别表示真与假、开与关、Yes与No等两种状态。
Boolean数据类型常被使用在关系表达式及逻辑表达式条件式中,用来判断条件成立与否。
第3讲常量、变量与数据类型
(二)
3.3.5日期常量
日期常量代表以Date数据类型的值所表示的特定时间。
常量可同时指定日期和时间、仅指定日期或仅指定时间。
日期常量
数据类型
内存
范围
Date(日期)
8Bytes
1/1/00010:
00:
00~12/31/199911:
59:
59PM
如果省略日期值,则会假设为公元1年1月1日。
如果省略时间值,则会假设为12:
00:
00AM。
例:
#11:
20:
00PM# (仅指定时间)
#9/9/2004# (仅指定日期)
#9/9/200412:
45:
00PM# (同时指定日期及时间)
3.3.6variant
Variant字符串类型的存储空间为22字节加上字符串的长度,其取值范围与变长字符串数据类型的取值范围相同,缺省值为Empty。
Variant数字型的存储空间为16字节,其取值范围与Double数据类型的取值范围相同,缺省值为Empty。
3.4 变量和数据类型
为了要避免变量占用太多的内存空间,VBA视数据的大小与数据种类尔给予不同的数据类型。
将变量分成数值、字符串、布尔、日期等类型。
各种数据类型所占用的字节(Byte)不相同。
使用变量的第一步是了解变量的数据类型.变量的数据类型控制变量允许保存何种类型的数据,各种类型的变量所需要的存储空间和能够存储的数值范围.
第3讲常量、变量与数据类型(三)
VBA数据类型表
数据类型
存储空间
数值范围
Byte
1字节
0-255
Booleam
2字节
True或者False
Integer
2字节
-32768-32767
Long(长整型)
4字节
-2147483648-2147483647
Single
4字节
负值范围:
-3.402823E38--1.401298E-45
正值范围:
1.401298E-45-3.402823E38
Double
8字节
负值范围:
-1.79769313486232E308--494065645841247E-324
正值范围:
4.94065645841247E-324-1.79769313486232E308
Currency
8字节
-922337203685477-922337203685477
Decimal
14字节
不包括小数时:
+/-79228162514264337593543950335
包括小数时:
+/7.9228162514264337593543950335
Date
8字节
1000年1月1日-9999年12月31日
Object
4字节
任何引用对象
String(长字符串)
10字节+1字节/字符
0-约20亿
String(固定长度)
字符串的长度
1-约65400
Varient(数字)
16字节
Double范围内的任何数值
Varient(文本)
22字节+1字节/字符
数据范围和变长字符串相同
3.5变量的声明方式
在程序中,要使用变量,必须先使用Dim声明确定其数据类型,若在声明时未设置其初值,数值变量默认为0、字符串变量默认为空字符串。
使用Dim声明变量的方式如下:
DimsumAsInteger 声明sum为整型变量,初值默认为0
Dimstring1,string2As String 同时声明string1、string2为字符串类型变量初值空字符串
DimcostAsInteger=50 声明cost为整型变量,并设初值为50
第4讲运算符
(一)
第4讲 运算符
作者:
运算符(Operator)用来指定数据做何种运算。
运算符按照运算时所需要的操作数(Operand)数目分成:
单元运算符(UnaryOperator),如:
﹣9;二元运算符(BinaryOperator),如a+b为一个加法表达式(Expression),其中a、b为操作数,加号为运算符,由于加号运算符在运算是需要两个操作数,因此称为二元运算符。
4.1算术运算符
算术运算符是用来执行一般的数学运算,如:
加、减、乘、除和取余数等运算。
算术运算符与表达式
运算符符号
运算符
表达式
+
相加运算符
i=j+k
﹣
相减运算符
i=j﹣k
*
相乘运算符
i=j*k
/
相除运算符
i=j/k
\
整型除法运算符
i=j\k
Mod
取余数运算符
i=jModk
^
指数运算符
i=5^2
4.2关系运算符
关系表达式的功能式用来比较字符串或数值的大小。
关系表达式经过运算后,其结果可以为真(True)或为假(False),通过其结果来决定程序的执行流程。
关系运算符与关系表达式
关系运算符
意义
数学式
关系表达式
==
相等
A=B
A==B
<>
不相等
A≠B
A<>B
>
大于
A>B
A>B
<
小于
A
A
>=
大于或等于
A≧B
A>=B
<=
小于或等于
A≤B
A<=B
Like
按样式比较字符串
字符串Like样式
Is
比较对象
对象AIs对象B
TypeOf…Is
测试对象数据类型
If(TypeOf对象Is)Then
Like子句样式用法如下所示:
DimchksignAsBoolean
chksign=“A”Like“A” ‘True
chksign=“a”Like“A” ‘False
chkFlag=“A”Like“AAA” ‘False
第4讲运算符
(二)
4.3逻辑表达式
逻辑表达式用来测试比较复杂的条件,一般都用来连接多个关系表达式。
如:
使用age变量当年龄,若条件为:
10If(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<1)Or(a>=5) ‘检查a是否小于大于5,结果为True
4.4赋值运算符与复合赋值运算符
当需要指定某个变量的值、将某个变量或某个表达式的结果指定给某个变量时,就必须使用赋值运算符来完成。
赋值运算符是以符号(=)来表示。
第5讲流程控制语句
第5讲 流程控制语句
作者:
一个程序的流程,都是由顺序结构、选择结构和循环结构三者组合而成。
顺序结构的特点是语句由上而下逐行地执行。
选择结构是当程序执行时,欲改变程序执行的顺序时使用。
循环结构俗称重复,当程序中有某个语句块需要循环执行时使用。
因此,设计一个具有结构化的程序,除了必须具有清晰的逻辑分析能力外,要使用以上所述的三种结构来实现。
5.1 If语句
“选择结构”指当程序执行时,需要改变执行的流程时,则必须使用条件来做判断,若满足条件(即结果为True)则执行某个语句段,若不满足条件(即结果为False)则执行另一个语句段。
1.If…Then…Else语句
在设计程序时,常会碰到“如果…那么…”或时“如果…那么…否则…”的情况,这种情况便要使用If…Then…或是If…Then…Else…语句来完成。
由下面语法可知,若满足条件就执行“Then语句块”,不