文档库 最新最全的文档下载
当前位置:文档库 › EXCEL_VBA是什么意思

EXCEL_VBA是什么意思

EXCEL_VBA是什么意思
EXCEL_VBA是什么意思

第1讲什么是EXCEL VBA

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很多,遇到问题,可以通过搜索,一般都能够找到。通过积累,逐渐就掌握了。一般需要三个月左右的时间。

第2讲EXCEL VBA的开发环境和开发过程转载

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中,大量的数据是中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(字节)1Byte0~255的整数(这种数据类型占用的内存空间最少)

Short(短整数)2Bytes-32 768~32 767的整数

Integer(整数)4 Bytes-2 147 483 648~2 147 483 647的整数(约有10位数的正负整数)

Long(长整数)8Bytes-9 223 372 036 854 775 808~9 223 372 036 854 775 808的整数(约有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整数范围:+/﹣79 228 162 514 264 337 593 543 950 335

浮点数范围:+/﹣7.9228162514264337593543950335

最小非零值范围:+/﹣0.0000000000000000000000000001(有效位数为29位,可以表示小数)

3.3.3 字符串常量

字符串常量由一连串的字符组合而成,包括中文、英文字母、空格、数字、特殊符号。字符串常量可细分成:Char(字符)数据类型和String(字符串)数据类型,其所占的内存空间和允许的范围大小如表所示。

字符串常量数据类型内存范围

Char(字符)2Byte0~65535的整数,为Unicode码(每一个码代表一个字符)

String(字符串)变动长度0~20亿个Unicode字符

字符串常量必须使用“””双引号头尾括起来。

3.3.4 布尔常量

布尔常量只有两个值,一个为“True”、另一个为“False”,分别表示真与假、开与关、Yes与No等两种状态。Boolean数据类型常被使用在关系表达式及逻辑表达式条件式中,用来判断条件成立与否。

3.3.5 日期常量

日期常量代表以Date数据类型的值所表示的特定时间。常量可同时指定日期和时间、仅指定日期或仅指定时间。

日期常量数据类型内存范围

Date(日期)8Bytes1/1/0001 0:00:00~12/31/1999 11:59:59 PM

如果省略日期值,则会假设为公元1年1月1日。如果省略时间值,则会假设为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)不相同。

使用变量的第一步是了解变量的数据类型.变量的数据类型控制变量允许保存何种类型的数据,各种类型的变量所需要的存储空间和能够存储的数值范围

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声明变量的方式如下:

Dim sum As Integer 声明sum为整型变量,初值默认为0

Dim string1,string2 As String 同时声明string1、string2为字符串类型变量初值空字符串

Dim cost As Integer =50 声明cost为整型变量,并设初值为50

第4讲运算符转载2009-02-03 17:30:04 阅读26 评论0 字号:大中小订阅

运算符(Operator)用来指定数据做何种运算。运算符按照运算时所需要的操作数(Operand)数目分成:单元运算符(Unary Operator),如:﹣9;二元运算符(Binary Operator),如a+b为一个加法表达式(Expression),其中a、b 为操作数,加号为运算符,由于加号运算符在运算是需要两个操作数,因此称为二元运算符。

4.1 算术运算符

算术运算符是用来执行一般的数学运算,如:加、减、乘、除和取余数等运算。

算术运算符与表达式

运算符符号运算符表达式

+相加运算符i=j+k

-相减运算符i=j﹣k

*相乘运算符i=j*k

/相除运算符i=j/k

\整型除法运算符i=j\k

Mod取余数运算符i=jMod k

^指数运算符i=5^2

4.2 关系运算符

关系表达式的功能式用来比较字符串或数值的大小。关系表达式经过运算后,其结果可以为真(True)或为假(False),通过其结果来决定程序的执行流程。

关系运算符与关系表达式

关系运算符意义数学式关系表达式

= =相等A=B A= =B

<>不相等A≠B A<>B

>大于A>B A>B

<小于A

>=大于或等于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.3 逻辑表达式

逻辑表达式用来测试比较复杂的条件,一般都用来连接多个关系表达式。如:使用age变量当年龄,若条件为:10

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<1) Or (a>=5) ‘检查a是否小于大于5,结果为True

4.4 赋值运算符与复合赋值运算符

当需要指定某个变量的值、将某个变量或某个表达式的结果指定给某个变量时,就必须使用赋值运算符来完成。赋值运算符是以符号(=)来表示。

第5讲流程控制语句转载2009-02-03 17:31:02 阅读29 评论0 字号:大中小订阅

一个程序的流程,都是由顺序结构、选择结构和循环结构三者组合而成。顺序结构的特点是语句由上而下逐行地执行。选择结构是当程序执行时,欲改变程序执行的顺序时使用。循环结构俗称重复,当程序中有某个语句块需要循环执行时使用。因此,设计一个具有结构化的程序,除了必须具有清晰的逻辑分析能力外,要使用以上所述的三种结构来实现。

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

若startend则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讲函数转载2009-02-03 17:32:56 阅读39 评论0 字号:大中小订阅

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∣Private] Function函数名称([参数列表])[As数据类型]

[语句块]

函数名=表达式

[Exit Function]

或(Return表达式)

End Function

6.2 测试函数

IsNumeric(x) 是否为数字, 返回Boolean结果,True or False

IsDate(x) 是否是日期, 返回Boolean结果,True or False

IsEmpty(x)是否为Empty, 返回Boolean结果,True or False

IsArray(x) 指出变量是否为一个数组。

IsError(expression) 指出表达式是否为一个错误值

IsNull(expression) 指出表达式是否不包含任何有效数据(Null)。

IsObject(identifier) 指出标识符是否表示对象变量

6.3 数学函数

Sin(X)、Cos(X)、Tan(X)、Atan(x) 三角函数,单位为弧度

Log(x) 返回x的自然对数

Exp(x)返回ex

Abs(x) 返回绝对值

Int(number)、Fix(number) 都返回参数的整数部分,区别:Int 将-8.4 转换成-9,而Fix 将-8.4 转换成-8

Sgn(number) 返回一个Variant (Integer),指出参数的正负号

Sqr(number) 返回一个Double,指定参数的平方根

VarType(varname) 返回一个Integer,指出变量的子类型

Rnd(x)返回0-1之间的单精度数据,x为随机种子

6.4 字符串函数

Trim(string) 去掉string左右两端空白

Ltrim(string) 去掉string左端空白

Rtrim(string) 去掉string右端空白

Len(string) 计算string长度

Left(string, x) 取string左段x个字符组成的字符串

Right(string, x) 取string右段x个字符组成的字符串

Mid(string, start,x) 取string从start位开始的x个字符组成的字符串

Ucase(string) 转换为大写

Lcase(string) 转换为小写

Space(x) 返回x个空白的字符串

Asc(string) 返回一个integer,代表字符串中首字母的字符代码

Chr(charcode) 返回string,其中包含有与指定的字符代码相关的字符

6.5 转换函数

CBool(expression) 转换为Boolean型

CByte(expression) 转换为Byte型

CCur(expression) 转换为Currency型

CDate(expression) 转换为Date型

CDbl(expression) 转换为Double型

CDec(expression) 转换为Decemal型

CInt(expression) 转换为Integer型

CLng(expression) 转换为Long型

CSng(expression) 转换为Single型

CStr(expression) 转换为String型

CVar(expression) 转换为Variant型

Val(string) 转换为数据型

Str(number) 转换为String

6.6 日期函数

名称说明

IsDate 语法:IsDate(表达式);功能:若该表达式为日期类型变量时,返回True;否则返回False。范例:check=IsDate(“2/21/1969”) ‘返回True;check=IsDate(”Hello”)’返回False

Today 语法:Today;功能:设置或返回目前系统的日期

Now 语法:Now;功能:返回目前系统的日期与时间

Year 语法:Year(datetime);功能:返回公元年。范例:n=Year(”2/12/1999”)‘n=1999

Month 语法:Month(datetime);功能:返回1~12月份。范例n=Month(“5/12/1969”) ‘n=5

Day 语法:Day(datetime);功能:返回日期。范例:n= Microsoft.VisualBasic.Day(“2/21/1969”) ‘n=21 MonthName 语法:MonthName(月份);功能:返回相对应的月份名称。范例:str= MonthName(3) ‘str=三月

WeekDay 语法:WeekDay(datetime);功能:返回星期几,其值为1~7。若返回1,表示星期日;返回2表示星期一……依次类推。范例:n=Weekday(”3/14/2003”)‘n=6 表示这天为星期五

WeekdayName 语法:WeekdayName(n);功能:返回一星期中的第几天。n为1则返回星期日;n为2返回星期一……依次类推。范例:str=WeekdayName(5)‘str=星期四

第7讲操作工作簿转载2009-02-03 17:33:51 阅读50 评论0 字号:大中小订阅

1.新建工作簿

Add方法创建一个新的工作簿,并添加到Workbooks集合中,新工作簿成为活动工作簿。

Workbooks.Add

举例:

Workbooks.Add

Activeworkbook.saveas "E:book3.xls"

作用:新建一个工作簿,并保存在E:盘上,文件名为book3.xls。

举例:

Workbooks.Add

Thisworkbook.saveas "E:book4.xls"

作用:新建一个工作簿,并保存在E:盘上,文件名为book4.xls。

2.打开工作簿

该方法打开一个已存在的工作簿,其语法稍微有点复杂:

Workbooks.Open(FileName,UpdateLinks,ReadOnly,Format,Password,

_WriteResPassWord,IgnoreReadOnlyRecommended,Origin,Delimiter, _Editable,Notify,Converter,AddToMRU)

在这些参数中,大多数参数很少用到(例如,几个与打开文本文件有关的参数)。所有的参数中,除了FileName外都是可选的。

参数FileName是所要打开的工作簿的文件名称。如果想要以只读的方式打开工作簿,则可将ReadOnly参数设置为True。

如果需要用密码来打开工作簿,则PassWord参数应该设置为该密码。如果需要使用密码而您没有指定密码,Excel将弹出对话框询问密码。

参数AddToMru指定将工作簿添加到最近使用的文件列表中,该参数值设置为True便添加该工作簿到最近使用的文件列表中,该参数的缺省值为False。

举例:

workbooks.Open ("e:book3.xls")

作用:打开e:book3.xls工作簿文件。

workbooks.Open FileName:="e:book3.xls"

作用与上相同。

举例:

workbooks.Open FileName:="e:book3.xls"

举例:

workbooks.Open FileName:="e:book4.xls",password:="12345"

增加了打开的密码。

3.激活工作簿

要激活工作簿,就使用activate方法,工作簿激活后,它将放在活动窗口中。

Workbooks(工作簿名称).activate

举例:

Workbooks(1).activate

作用:激活第一个工作簿。

4.保存工作簿

保存指定工作簿:

Workbooks("工作簿名称").save

保存当前工作簿:

activeWorkbook.save

5.关闭工作簿

Close方法关闭所有打开的工作簿。其语法为:

关闭所有的工作簿:

Workbooks.Close

关闭指定的工作簿:

Workbooks("工作簿名称").close

第8讲操作工作表转载2009-02-03 17:34:29 阅读90 评论0 字号:大中小订阅插入一个工作表:Sheets.Add

在指定工作表前插入工作表:

Sheets.Add Before:=Sheets(工作表名称或工作表序号)

举例:

Sheets.Add Before:=Sheets(“Sheet3”)

Sheets.Add Before:=Sheets(3)

在指定工作表后插入工作表:

Sheets.Add Before:=Sheets(工作表名称或工作表序号) 举例:

Sheets.Add After:=Sheets(“Sheet3”)

Sheets.Add After:=Sheets(3)

在最后插入工作表:

Sheets.Add After:=Sheets(Sheets.Count)

在最前插入工作表:

Sheets.Add Before:=Sheets(1)

插入2个空白工作表:

Sheets.Add Count:=2

这里利用自变量Count来控制插入工作表的数量。检查工作表”Sheet2”是否存在:

Private Sub检查工作表是否存在()

Dim iCount As Integer

For iCount = 1 To Sheets.Count

If Sheets(iCount).Name = "Sheet2" Then

MsgBox "Sheet2已经存在"

Exit Sub

End If

Next iCount

End Sub

8.2 选取工作表

选取指定工作表:

Sheets(工作表名称或工作表序号).Select

举例:

Sheets(“Sheet2”).Select

Sheets(2).Select

设置活动工作表:

Sheets(工作表名称或工作表序号).Activate

举例:

Sheets("Sheet2").Activate

Sheets(2). Select

8.3 隐藏工作表

隐藏一个工作表:

Sheets(工作表名称或工作表序号).Visible=0

举例:

Sheets(“Sheet2”).Visible=0

Sheets(2) .Visible=0

取消隐藏一个工作表:

Sheets(工作表名称或工作表序号).Visible=-1

举例:

Sheets(“Sheet2”).Visible=-1

Sheets(2) .Visible=-1

8.4 复制和移动工作表

1.复制

复制到指定工作表之前:

Sheets(工作表名称或工作表序号).Copy Befor:=Sheets(工作表名称或工作表序号) 复制到指定工作表之后:

Sheets(工作表名称或工作表序号).Copy After:=Sheets(工作表名称或工作表序号) 2.移动

移动到指定工作表之前:

Sheets(工作表名称或工作表序号).Move Befor:=Sheets(工作表名称或工作表序号) 移动到指定工作表之后:

Sheets(工作表名称或工作表序号).Move After:=Sheets(工作表名称或工作表序号) 8.5 删除工作表

删除指定工作表:Sheets(工作表名称或工作表序号).Delete

Sheets(”Sheet2”).Delete

Sheets(2).Delete

根据条件删除工作表

删除工作表名左边两位字符等”gz”的工作表

Private Sub 删除满足条件工作表

Dim I as integer

For i = .Sheets.Count To 1 Step -1

With .Sheets(i)

If Left(.NAME, 2)="gz" Then

.Delete

End If

End With

Next i

End Sub

8.6 工作表命名

修改指定工作表名称:Sheets(工作表名称或工作表序号).Name=工作表名称

把工作表Sheet2命名为GZSheet

Sheets(”Sheet2”).Name=”GZSheet”

Sheets(2).Name=”GZSheet”

注意:工作表的名称在一个工作中必须是唯一的,且不区分大小写和全半角的。也就是说在工作簿中把名称“SHEET2”,”sheet2”看成是相同的名称。

8.7 工作表的保护

1.工作表的保护

Sheets(工作表名称或工作表序号).Protect password:=密码

2.解除工作表的保护

Sheets(工作表名称或工作表序号).Unprotect password:=密码

第9讲操作单元格转载2009-02-03 17:35:47 阅读91 评论0 字号:大中小订阅

9.1 选取全部单元格

Cells.select

9.2 选取单元格

1.Range

Range表示单个单元格:Range(列标& 行标)

举例:

选取A1单元格。

Range(" A1" )

Range(" A" & 1)

Range(“A1”).Select

2. Cells

Cells表示单个单元格:Cells(行号,列号)

Cells(1,1)

Cells(1,1).Select

3. Sheets

某个工作表的单元格

Sheets(工作表名).Range(单元格地址)

某个工作簿的某个工作表的单元格

4. Workbooks

Workbooks(工作簿名). Sheets(工作表名).Range(单元格地址)

9.3 选取单元格区域

1.选取连续单元格区域

选取A1:G10

Range("A1:G10").Select

Range(Cells(1,1),Cells(10,4)).Select

2.选取不连续的单元格区域

选取A1和B2:F4和G2:H3

Range(" A1,B5:F4,G2:H10 ").Select

9.4 选取行

1.选取单行

选取第五行

Range(" 5:5 ").Select

Rows(" 5:5 ").Select

Rows(5).Select

2.选取连续多行

选取第2行到第8行

Range(“2:8”).Select

Rows(“2:8”).Select

选取不连续的多行

选取第5行,第8~9行,第12~18行Range(“5:5,8:9,12:18”).Select

9.5 选取列

1.选取单行

选取第C列

Range(“C:C”).Select

Columns(“C:C”).Select

Columns (3).Select

2.选取连续多列

选取第C列到第H列

Range(“C:H”).Select

Columns (“C:H”).Select

3.选取不连续的多列

选取第C列,第E:G列,第J列Range(“C:C,E:G,J:J”).Select

9.6 设置单元格内容

语法:单元格.Value=常量

给A1:A10赋值

Range(“A1:A10”).Value=”MAO”

For I=1 To 10

Cells(I,1)=I

Next I

9.7 设置单元格的计算公式

设置F3单元的公式:

Range(“F3”).formula=”=B3*D3”

9.8 清除单元格信息

1.清除单元格信息

清除F3单元的信息:

Range(“F3”).clear

可以清除单元格的格式、内容及批注。

2.清除单元格格式

Range(“A1”).Clearformats

3.清除单元格的内容

R ange(“A1”).ClearContents

4.清除单元格批注

Range(“A1”).Clearcomments

9.9 设置单元格区域格式

Selection对象

Selection是全局对象,每进行Cells或Range的Select方法就会改变Selection对象

Cells(1,1).Select,Selection对象区域就是A1

Range("A1:F10").Select,Select对象区域就是A1:F10

对单元格区域的格式设置,往往通过Selection设置

设置A1:F10的字体为黑体

Range(" A1:F10").Select

https://www.wendangku.net/doc/422854529.html, = "黑体"

设置边框Selection.Borders([边框类型])

如果设置边框的区域是1行,则Borders(xlInsideVertical)的设置会出错,

如果设置边框的区域是1列,则Borders(xlInsideHorizontal)的设置会出错。

一般用一下方法设置边框避免出错:

Selection.Borders.LineStyle = xlContinuous

Selection.Borders.Weight = xlThin

Selection.Borders.ColorIndex = xlAutomatic

9.10 行列的插入和隐藏

1.行列插入

Rows(5).Insert

在第五行前插入一行。

Columns(6).Insert

在第六列前插入一列。

2.行列隐藏

隐藏:

Rows(5).Hidden=Trun

Columns(6). Hidden=Trun

取消隐藏:

Rows(5).Hidden=False

Columns(6). Hidden= False

9.11 单元格查找

<单元格区域>.Find (What,[After],[LookIn],[LookAt],[SearchOrder],[SearchDirection],[MatchCase],[MatchByte],[SearchFormat])

参数说明:

(1)<单元格区域>,必须指定,返回一个Range对象。

(2)参数What,必需指定。代表所要查找的数据,可以为字符串、整数或者其它任何数据类型的数据。对应于“查找与替换”对话框中,“查找内容”文本框中的内容。

(3)参数After,可选。指定开始查找的位置,即从该位置所在的单元格之后向后或之前向前开始查找(也就是说,开始时不查找该位置所在的单元格,直到Find方法绕回到该单元格时,才对其内容进行查找)。所指定的位置必须是单元格区域中的单个单元格,如果未指定本参数,则将从单元格区域的左上角的单元格之后开始进行查找。

(4)参数LookIn,可选。指定查找的范围类型,可以为以下常量之一:xlValues、xlFormulas或者xlComments,默认值为xlFormulas。对应于“查找与替换”对话框中,“查找范围”下拉框中的选项。

(5)参数LookAt,可选。可以为以下常量之一:XlWhole或者xlPart,用来指定所查找的数据是与单元格内容完全匹配还是部分匹配,默认值为xlPart。对应于“查找与替换”对话框中,“单元格匹配”复选框。

(6)参数SearchOrder,可选。用来确定如何在单元格区域中进行查找,是以行的方式(xlByRows)查找,还是以列的方式(xlByColumns)查找,默认值为xlByRows。对应于“查找与替换”对话框中,“搜索”下拉框中的选项。

(7)参数SearchDirection,可选。用来确定查找的方向,即是向前查找(XlPrevious)还是向后查找(xlNext),默认的是向后查找。

(8)参数MatchCase,可选。若该参数值为True,则在查找时区分大小写。默认值为False。对应于“查找与替换”对话框中,“区分大小写”复选框。

(9)参数MatchByter,可选。即是否区分全角或半角,在选择或安装了双字节语言时使用。若该参数为True,则双字节字符仅与双字节字符相匹配;若该参数为False,则双字节字符可匹配与其相同的单字节字符。对应于“查找与替换”对话框中,“区分全角/半角”复选框。

(10)参数SearchFormat,可选,指定一个确切类型的查找格式。对应于“查找与替换”对话框中,“格式”按钮。当设置带有相应格式的查找时,该参数值为True。

(11)在每次使用Find方法后,参数LookIn、LookAt、SearchOrder、MatchByte的设置将保存。如果下次使用本方法时,不改变或指定这些参数的值,那么该方法将使用保存的值。

在VBA中设置的这些参数将更改“查找与替换”对话框中的设置;同理,更改“查找与替换”对话框中的设置,也将同时更改已保存的值。也就是说,在编写好一段代码后,若在代码中未指定上述参数,可能在初期运行时能满足要求,但若用户在“查找与替换”对话框中更改了这些参数,它们将同时反映到程序代码中,当再次运行代码时,运行结果可能会产生差异或错误。若要避免这个问题,在每次使用时应设置这些参数。

举例:

Range("C:C").Find("何菲菲").Row

作用:查找“何菲菲”所在的行的行号。

第10讲VBA程序设计转载2009-02-03 17:39:21 阅读158 评论0 字号:大中小订阅

第10讲VBA程序设计

10.1 案例

设计的VBA程序它是存放在EXCEL的工作簿中。

案例:

工作簿名称:工资数据

一个人在单位中,有一个固定的编号,这个编号不随部门的换而变化。人员在部门的变动可以通过序号完成。序号起两个作用,第一位是部门号,第二和第三位是顺序号。通过这个顺序号,就能够达到划分部门和人员在部门内的排序。

10.2 过程程序

1.创建过程

Sub 过程是一系列由Sub 和End Sub 语句所包含起来的Visual Basic 语句,它们会执行动作却不能返回一个值。Sub 过程可有参数,例如常数、变量、或是表达式等来调用它。如果一个Sub 过程没有参数,则它的Sub 语句必须包含一个空的圆括号。

创建一个过程需要两个基本步骤。首先,需要向工作簿中添加一个模块。接着需要向模块中添加一个工程。对于创建的每一个应用程序,只需添加一次模块。可以使用多个模块,但这是不必要的。某些开发者喜欢使用多个模块,以便根据他们的目的或者窗体对过程进行组织。

下面举例创建一个过程,它显示一个消息框。

(1)打开一个新工作簿。

(2)选择"工具"-"宏"-"Visual Basic编辑器",打开VBA编辑器窗口。

(3)在`VBA编辑器的左面,可以看到“工程资源管理器”窗口。在工程资源管理器窗口的“Thisworkbook"上单击鼠标右键,选择“插入”-“模块”,这样就将一个模块添加到应用程序中了。(如果你没有看见“工程资源管理器”窗口,可以按Ctrl+R)。

(4)选择“插入”“过程”,显示“添加过程”对话框。

(5)输入“第一个程序”作为过程名字。在“类型”分组框中,确认选择了“子程序”。单击“确定”按钮。这样一个新的过程就添加到模块中了。可以在模块中看到以Public Sub 第一个过程()开始,以End Sub结束的语句结构。

VBA对子程序和函数有如下的命名规则:

名字中可以包含字母数字和下划线。

名字中不能包含空格句号惊叹号,也不能包含字符@ & $ #.

名字最多可以包含255个字符。

(6)在过程中插入光标,输入以下语句并回车:

在输入Msgbox后,会自动弹出一个消息框告诉你有关这条命令的信息,称之为自动列表技术。

Public Sub 第一个程序()

MsgBox "EXCEL VBA程序"

End Sub

对Msgbox的进一步说明:

语法:MsgBox(prompt[, buttons] [, title] [, helpfile, context])

在MsgBox 函数的语法中,括号内的参数是此函数的命名参数。方括号所包含的参数是选择性的。在MsgBox 函数中,唯一必须提供的参数(prompt)是做为提示的文本。

在代码中可以利用位置或名称来指定函数与方法的参数。若利用位置来指定参数,则必须根据语法中的顺序,利用逗号来分隔每一个参数,例如:

MsgBox "回答正确!",0,"提示"

若以名称来指定参数,则须使用参数名称或跟着冒号与等号(:=),最后再加上参数值。可以任何的顺序来指定命名参数,例如:

MsgBox Title:="提示", Prompt:="回答正确"

函数以及某些方法的语法会利用圆括号将参数封闭起来。这些函数和方法会返回值,所以必须用圆括号将参数封闭起来,才可以赋值给变量。如果忽略返回值或是没有传递所有的参数,则可以不用圆括号。方法若不返回值,则不用将参数用圆括号封闭起来。

2.运行过程

创建过程后,可以通过几种方式运行。可以直接使用“运行”菜单,“运行子程序/用户窗体”工具栏按钮或按下F5键。

按F5后,选择要运行的过程:

运行结果:

3.保存对模块所做的改变

要保存新过程,需要保存过程所驻留的工作簿。可以用VBA编辑器保存工作簿。具体步骤如下:

选择"文件"-"保存"。则工作簿和模块与过程都保存下来了。

10.3 变量的应用

1.用Dim语句声明变量

声明变量可以使用Dim语句,基本语法如下:

Dim 变量名AS 数据类型

条语法中的变量名代表将要声明的变量名。对变量的命名规则和对过程的命名规则相同。

变量名必须以字母开始,并且只能包含字母数字和特定的特殊字符,不能包含空格、句号惊叹号,也不能包含字符@ & $ #。名字最大长度为255个字符

举例:输入一个信息,然后显示出来。具体步骤如下:

(1)创建一个名为"显示信息"的子程序。

(2)输入以下代码:

Public Sub 显示信息()

Dim M_msg As String

M_msg = InputBox("请输入信息:")

MsgBox "你输入的信息是:" & M_msg

End Sub

(3)按下F5键运行过程。

4)输入“会计电算化”后按回车键(输入其他内容也可),会显示一个消息框。

在Dim语句中如果如果没有数据类型,变量将被定义为Variant类型,因为VBA中默认的数据类型是Variant。Variant数据类型占用存储空间较大,而且它将影响程序的性能,因此应当在程序中确定变量的类型。

2. 作用域

变量可以在两个地方定义常量和变量:过程中定义和在模块顶部一个名为"通用声明"的区域内定义。而且定义的位置就决定了作用域。

在过程中声明,该变量只能在该过程中使用,其他过程中不能使用这个变量和常量,这种变量为局部变量或过程级变量。在模块顶部声明的变量称为模块级变量,该变量在该模块的所有过程中都可以使用。

公共级变量可以在应用程序的任何过程中使用,不论过程和变量是否定义在一个模块。这就使得公共级变量在使用中十分灵活,但是公共级变量在程序运行时一直保留在内存中,这样就占用了系统资源。要创建公共级变量,可以用Public语句,具体语法如下:

Public variablename As datatype

要创建公共级常量,具体语法如下:

Public const CONSTANAME datatype = value

公共级变量或常量必须在模块顶部的“通用声明”区域中定义。

举例:

Public M_dm As Characters

Public M_name As Characters

3. 声明数组

数组的声明方式和其他的变量是一样的,它可以使用Dim、Static、Private 或Public 语句来声明。标量变量(非数组)与数组变量的不同在于通常必须指定数组的大小。若数组的大小被指定的话,则它是个固定大小数组。若程序运行时数组的大小可以被改变,则它是个动态数组。

数组是否从0 或1 索引是根据Option Base 语句的设置。如果Option Base 没有指定为1,则数组索引从0 开始。

(1)声明固定大小的数组

下面这行代码声明了一个固定大小的数组,它是个21 行乘以21 列的Integer 数组:

Dim M_Array(20, 20)As Integer

第一个参数代表的是行;而第二个参数代表的是列。

与其他变量的声明一样,除非指定一个数据类型给数组,否则声明数组中元素的数据类型为Variant。数组中每个数组的数字型Variant 元素占用16 个字节,每个字符串型Variant 元素占用22 个字节。

(2)声明动态数组

若声明为动态数组,则可以在执行代码时改变数组大小。可以利用Static、Dim、Private 或Public 语句来声明数组,并使括号内为空,如下示例所示。

Dim M_Array()As Single

可以在过程中使用ReDim 语句来做隐含性的数组声明。

对于过程中的数组范围,可以使用ReDim 语句去改变它的维数。然而当执行这个命令时,数组中存在的值会丢失。若要保存数组中原先的值,则可以使用ReDim Preserve 语句来扩充数组。例如,下列的语句将XArray 数组扩充了5 个元素,而原本数组中的当前值并没有消失掉。

ReDim Preserve XArray(UBound(XArray)+ 5)

10.4 控件的应用

1.向工作表添加控件

用EXCEL设计界面时,要将控件添加到工作表上,可以按以下步骤操作:

(1)选择工具下的“自定义”,显示"窗体"工具栏。

(2)选择"标签"控件。

(3)将鼠标定位到某单元格,此时鼠标变成小十字。

(4)按下左键,拖动鼠标,确定控件的大小,放开鼠标左键。

(5)在“标签1”上单击右键,选择"编辑文字",现在可以输入文字。完成后,单击任何单元格退出文字编辑。

(6)通过以上步骤可以添加其它所需要的控件到工作表中。

2.设置控件的特性

每个控件都有一系列的特性,需要进行设置来满足不同的需要。设置控件的特性,可以在该控件上按右键完成。

3.给控件命名

当创建一个控件时,EXCEL会自动给它指定一个默认的名字,但不便于理解和记忆。更改控件的名字,先选中某个控件,再在位于公式栏上的"名字"编辑框输入控件名字。这样就给控件更改了名字。

4.使用用户窗体

要创建功能复杂的应用程序,并且方便用户输入数据,那么应该使用用户窗体。用户窗体可以作为程序的对话框和窗口。向用户窗体添加控件基本类似于向工作表添加控件,然而第一步要创建一个用户窗体。这可以通过VBA编辑器实现。具体按以下步骤操作:

(1)打开工作簿,选择"工具"-"宏"-"VBA编辑器",打开VBA编辑器。

(2)在VBA编辑器中选择工具栏上的"插入用户窗体"按钮或者选择"插入"菜单,从下拉菜单中选择"用户窗体"。

在VBA编辑器中出现一个名为"Userform1"的窗体,"控件工具箱"同时出现,在其中有部分新的控件。

这些新的控件是:

①切换按钮:该控件如果被选中,那么会保持被按下的状态。如果再次单击它就恢复为没有按下的状态。EXCEL工具栏中有几个这样的按钮,例如:"全屏显示","加粗","下划线"以及"窗体"工具栏中的"切换网格"等。

②选项卡条(TabStrip):它是包含多个选项卡的控件。通常用来对相关的信息进行组织或分类。例如:用选项卡条来显示各个地区的销售信息,可以给每个地区设置一个选项卡。在默认时,选项卡包含两页,分别叫做TAB1和TAB2,可以添加更多的选项卡。

excelvba常见字典用法集锦及代码详解(全)

常见字典用法集锦及代码详解 前言 凡是上过学校的人都使用过字典,从新华字典、成语词典,到英汉字典以及各种各样数不胜数的专业字典,字典是上学必备的、经常查阅的工具书。有了它们,我们可以很方便的通过查找某个关键字,进而查到这个关键字的种种解释,非常快捷实用。 凡是上过EH论坛的想学习VBA里面字典用法的,几乎都看过研究过northwolves狼版主、oobird版主的有关字典的精华贴和经典代码。我也是从这里接触到和学习到字典的,在此,对他们表示深深的谢意,同时也对很多把字典用得出神入化的高手们致敬,从他们那里我们也学到了很多,也得到了提高。 字典对象只有4个属性和6个方法,相对其它的对象要简洁得多,而且容易理解使用方便,功能强大,运行速度非常快,效率极高。深受大家的喜爱。 本文希望通过对一些字典应用的典型实例的代码的详细解释来

给初次接触字典和想要进一步了解字典用法的朋友提供一点备查的参考资料,希望大家能喜欢。 给代码注释估计是大家都怕做的,因为往往是出力不讨好的,稍不留神或者自己确实理解得不对,还会贻误他人。所以下面的这些注释如果有不对或者不妥当的地方,请大家跟帖时指正批评,及时改正。 字典的简介 字典(Dictionary)对象是微软Windows脚本语言中的一个很有用的对象。 附带提一下,有名的正则表达式(RegExp)对象和能方便处理驱动器、文件夹和文件的(FileSystemObject)对象也是微软Windows脚本语言中的一份子。 字典对象相当于一种联合数组,它是由具有唯一性的关键字(Key)和它的项(Item)联合组成。就好像一本字典书一样,是

ExcelVBA编程实例(150例)

ExcelVBA编程实例(150例) 主要内容和特点 《ExcelVBA编程入门范例》主要是以一些基础而简短的VBA实例来对ExcelV BA中的常用对象及其属性和方法进行讲解,包括应用程序对象、窗口、工作簿、工作表、单元格和单元格区域、图表、数据透视表、形状、控件、菜单和工具栏、帮助助手、格式化操作、文件操作、以及常用方法和函数及技巧等方面的应用示例。这些例子都比较基础,很容易理解,因而,很容易调试并得以实现,让您通过具体的实例来熟悉ExcelVBA编程。 ■ 分16章共14个专题,以具体实例来对大多数常用的ExcelVBA对象进行讲解; ■ 一般而言,每个实例都很简短,用来说明使用VBA实现Excel某一功能的操作; ■ 各章内容主要是实例,即VBA代码,配以简短的说明,有些例子可能配以必要的图片,以便于理解; ■ 您可以对这些实例进行扩充或组合,以实现您想要的功能或更复杂的操作。VBE编辑器及VBA代码输入和调试的基本知识 在学习这些实例的过程中,最好自已动手将它们输入到VBE编辑器中调试运行,来查看它们的结果。当然,您可以偷赖,将它们复制/粘贴到代码编辑窗口后,进行调试运行。下面,对VBE编辑器界面进行介绍,并对VBA代码输入和调试的基本知识进行简单的讲解。 激活VBE编辑器 一般可以使用以下三种方式来打开VBE编辑器: ■ 使用工作表菜单“工具——宏——Visual Basic编辑器”命令,如图00-01所示;■ 在Visual Basic工具栏上,按“Visual Basic编辑器”按钮,如图00-02所示;■ 按Alt+F11组合键。

图00-01:选择菜单“工具——宏——Visual Basic编辑器”命令来打开VBE编辑器 图00-02:选择Visual Basic工具栏上的“Visual Basic编辑器”命令按钮来打开VBE编辑器 此外,您也可以使用下面三种方式打开VBE编辑器: ■ 在任一工作表标签上单击鼠标右键,在弹出的菜单中选择“查看代码”,则可进入VBE编辑器访问该工作表的代码模块,如图00-03所示; ■ 在工作簿窗口左上角的Excel图标上单击鼠标右键,在弹出的菜单中选择“查看代码”,则可进入VBE编辑器访问活动工作簿的ThisWorkbook代码模块,如图00-04所示; ■ 选择菜单“工具——宏——宏”命令打开宏对话框,若该工作簿中有宏程序,则单击该对话框中的“编辑”按钮即可进行VBE编辑器代码模块,如图00-05所示。

经典ExcelVBA代码解析

经典Excel VBA代码1 VBA基础在大家的关注声中即将告一段落了,有许多经典的VBA操作我们只是作了简要的介绍,想要熟练地使用VBA还需要大家慢慢地去消化和吸收,然后在实践中总结和提高。最后我们收集了常见的VBA代码以飨广大的读者,希望对大家有所启示。 Application(Excel程序)篇 Application.EnableEvents= True/ False ’启用/禁用所有事件 Application.DisplayAlerts=True/False ’显示/关闭警告框提示框 Appli cation.ScreenUpdating= True/False ’显示/关闭屏幕刷新 Application.StatusBar = "软件报专用" ’在地址栏中显示文本,标题栏用Caption属性Application.Cursor = xlIBeam ‘设置光标形状为Ⅰ字形,xlWait为沙漏(等待)形,xlNormal为正常Application.WindowState = xlMinimized ‘窗口最小化,xlMaximized最大化,xlNormal为正常Application.Ac tivateMicrosoftApp xlMicrosoftWord ’开启Word应用程序 Application.TemplatesPath ‘获取工作簿模板的位置 Application.CalculateFull ’重新计算所有打开的工作簿中的数据 Application.RecentFiles.Maximum = 2 ’将最近使用的文档列表数设为2 Application.RecentFiles(3).Open ’打开最近打开的文档中的第3个文档 Application.AutoCorrect.AddReplacement "sweek", "软件报" ’自动将输入的"sweek"更正为"软件报" Application.Dialogs(xlDialogPrint).Show ‘显示打印文档的对话框 Application.OnTime Now + TimeValue("00:00:45"), "process" ’45分钟后执行指定过程Application.OnTime TimeValue("14:00:00"), " process " ’下午2点执行指定过程 Application.OnTime EarliestTime:=TimeValue("14:00:00"), _ Procedure:="process", Schedule:=False ’取消指定时间的过程的执行 工作簿/工作表篇 ActiveWorkbook.Sheets.Count ’获取活动工作薄中工作表数 ActiveWorkbook.LinkSources(xlExcelLinks)(1) ‘返回当前工作簿中的第一条链接 ThisWorkbook.Worksheets(“sheet2”).Visible=xlSheetHidden ‘隐藏工作表,与在Excel菜单中执行“格式—工作表—隐藏”操作一样 ThisWorkbook.Worksheets(“sheet2”).Visible=xlSheetVeryHidden ‘隐藏工作表,不能通过在Excel 菜单中执行“格式—工作表—取消隐藏”来重新显示工作表 ThisWorkbook.Worksheets(“sheet2”).Visible=xlSheetVisible ‘显示被隐藏的工作表ThisWorkbook.Sheets(1).ProtectContents ‘检查工作表是否受到保护 ActiveSheet.Columns("B").Cut ActiveSheet.Columns("F").Insert ‘以上两句将B列数据移至F列,原C列后的数据左移ActiveSheet.Range(“A:A”).EntireColumn.AutoFit ‘自动调整当前工作表A列的列宽ActiveSheet.Cells.SpecialCells(xlCellTypeConstants,xlTextValues) ‘选中当前工作表中常量和文本单元格 ActiveSheet.Cells.SpecialCells(xlCellTypeConstants,xlErrors+xlTextValues) ‘选中当前工作表中常量和文本及错误值单元格

EXCELVBA帮助手册

Excel2003VBA 帮助文档

目录 一些对象的应用方法 (4) Add 方法 (5) Add方法(Dictionary) (6) Add 方法(Folders) (6) Assert 方法 (7) BuildPath 方法 (8) Clear 方法 (8) Close 方法 (9) Copy 方法 (10) CopyFile 方法 (10) CopyFolder 方法 (11) CreateFolder 方法 (12) CreateTextFile 方法 (13) Delete 方法 (14) DeleteFile 方法 (14) DeleteFolder 方法 (15) DriveExists 方法 (15) Exists 方法 (16) FileExists 方法 (16) FolderExists 方法 (17) GetAbsolutePathName 方法 (17) GetBaseName 方法 (18) GetExtensionName 方法 (18) GetFile 方法 (19) GetFileName 方法 (19) GetFolder 方法 (20) GetParentFolderName 方法 (20) GetSpecialFolder 方法 (21) GetTempName 方法 (22) Hide 方法 (22) Item 方法 (23) Items 方法 (24) Keys方法 (24) Move 方法 (25) Move 方法(UseForm) (25) 1、应用于 (25) 2、请参阅 (25) MoveFile 方法 (25) MoveFolder 方法 (26) OpenAsTextStream 方法 (27) OpenTextFile 方法 (28) Print 方法 (30)

excelVBA常用函数

(1) Option Explicit '强制对模块内所有变量进行声明 Option Private Module '标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示 Option Compare Text '字符串不区分大小写 Option Base 1 '指定数组的第一个下标为1 (2) On Error Resume Next '忽略错误继续执行VBA代码,避免出现错误消息 (3) On Error GoTo ErrorHandler '当错误发生时跳转到过程中的某个位置 (4) On Error GoTo 0 '恢复正常的错误提示 (5) Application.DisplayAlerts=False '在程序执行过程中使出现的警告框不显示 (6) Application.ScreenUpdating=False '关闭屏幕刷新 Application.ScreenUpdating=True '打开屏幕刷新 (7) Application.Enable.CancelKey=xlDisabled '禁用Ctrl+Break中止宏运行的功能 工作簿 (8) Workbooks.Add() '创建一个新的工作簿 (9) Workbooks(“book1.xls”).Activate '激活名为book1的工作簿 (10) ThisWorkbook.Save '保存工作簿 (11) ThisWorkbook.close '关闭当前工作簿 (12) ActiveWorkbook.Sheets.Count '获取活动工作薄中工作表数 (13) https://www.wendangku.net/doc/422854529.html, '返回活动工作薄的名称

ExcelVBA项目开发案例精选

ExcelVBA项目开发案例精选 前言 Excel是一款大家极为熟悉、使用极为广泛的电子表格软件。强大的数据统计,方便的图表制作等功能深受使用者赞誉。其实Excel的功能远不仅仅如此,在Excel及Office其它软件中还集成了一个开发环境,利用VBA编程进行二次开发,扩充Excel功能,轻松完成复杂而重复的各项操作。VBA是Excel使用者的福音,是名副其实的Excel的万能工具。掌握VBA编程会使人们的工作更轻松,更方便。由于VBA出生于Visual Basic,所以它具有入门容易,应用广泛的特点,还具有开发环境与运行环境无要求,数据库与程序集于一身等优点,经常被用于一些数据管理以及小型系统的开发。本人是一名教师,在教学实践中开发了许多实用的教学软件。现精选其中的九款软件编辑成册,奉献给读者。这些软件既具有一定的实用价值,更重要的是使读者进一步了解VBA的编程方法、开发技巧以及许多算法的实现途径,迅速提高编程水平。 章节安排 第1章VBA开发基本技能 本章简单介绍了VBA开发人员必须掌握的十大基本技能。主要有:了解开发环境、熟练宏操作、获取帮助信息、程序调试、熟练掌握基本语法、过程操作、访问Excel各类对象、用户窗体及控件设计、利用FSO 访问文件和文件夹、访问数据库等技术。 第2章中英文输入练习软件 键盘输入是每个计算机操作人员的最基本技能。本软件给用户提供了一个中英文输入的练习环境。软件根据键盘分布和五笔汉字输入规则,对练习项目合理分类、集中练习、强化记忆、由浅入深、循序渐进组织练习。软件涉及到的技术主要有:FSO文件系统对象、局域网工作簿的访问、窗体工具栏状态栏的操作、Windows造字程序的使用、图片列表、TreeView、ListView等控件的使用方法。 第3章汉字录入测试系统 汉字录入测试在许多场合都有其实用价值。汉字录入水平高低的测试主要在于速度和准确率的判定。本软件可以检测录入时间并按照最小错误原则对所录入的文本进行校对,判断出错字、多字以及少字的数量。软件中对文本的校对算法、文本框禁止粘贴的实现以及键盘事件等都作出了详尽的阐述。 第4章Word试卷自动生成器 由于网络的广泛运用,老师们经常从网上下载各类题库,在考试时从中抽题组卷。但在从题库中挑选试题及标准答案生成试卷是一件很麻烦的事。本软件可以根据用户的设置从题库中随机抽题自动生成“试卷”、“标准答案”和“答题纸”三个Word文档。本软件主要涉及的是Word文档的访问及操作、类模块实现控件数组等技术。 第5章AutoCAD图形文档自动批阅系统 AutoCAD是当前使用最为广泛的工程图纸绘图软件。许多学校相关专业、各级培训机构都开设了此课程。但如何批阅学生的绘图作业成为老师的难题,人工批阅费工费时,极不准确。本软件实现了通过计算机自动批阅AutoCAD的绘图文档。软件中涉及到VBA对AutoCAD图形文件的访问、压缩软件的调用、普通图元的批阅、非唯一性图元的批阅、非严格要求图元的批阅、多个同尺寸对象及标注的批阅等技术。 第6章通用计算机考试系统 使用计算机进行考试早已不是什么新鲜事了,电子考试使老师们出题更方便,批阅更准确。本软件可以进行常见的判断、单选、多选、填空、简答五类题型的考试与批阅。软件很好地解决了问答题批阅、试卷安全性、试题中图片处理等技术难题问题。 第7章公交查询系统 发达的城市公共交通给人们的出行带来了极大的便利,但同时复杂的公交线路也使出行时对公交线路的选择带来了困惑。本软件提供了了解苏州公共交通概况、实现线路与站点的各类查询功能。软件中采用了多页控件、ADO对象、复杂SQL语句查询等多项技术。

实用的EXCELVBA编程大全总结

实用的EXCEL VBA编程小结: 最近单位内部的项目里要用到些报表EXCEL的生成,虽说JAVA 的POI可以有这能力,但觉得还是可能比较麻烦,因此还是转用来搞,用Visual Studio2003配合office 2003,用到了一些VBA,因此小结并归纳之,选了些资料归纳在这里,以备今后查考 首先创建 Excel 对象,使用ComObj: Dim ExcelID as Set ExcelID as new 1) 显示当前窗口: := True; 2) 更改 Excel 标题栏: := '应用程序调用 Microsoft Excel'; 3) 添加新工作簿: 4) 打开已存在的工作簿: 'C:\Excel\' ); 5) 设置第2个工作表为活动工作表: [2].Activate; 或 [ 'Sheet2' ].Activate; 6) 给单元格赋值: [1,4].Value := '第一行第四列';

7) 设置指定列的宽度(单位:字符个数),以第一列为例: := 5; 8) 设置指定行的高度(单位:磅)(1磅=厘米),以第二行为例: := 1/; ows[8].PageBreak := 1; 10) 在第8列之前删除分页符: := 0; 11) 指定边框线宽度: 'B3:D4' ].Borders[2].Weight := 3; 1-左 2-右 3-顶 4-底 5-斜( \ ) 6-斜( / ) 12) 清除第一行第四列单元格公式: 13) 设置第一行字体属性: := '隶书'; := clBlue; := True; := True; 14) 进行页面设置: a.页眉:

excel2020VBA编程入门教程

excel2020VBA编程入门教程 VBA编程步骤1:点击Windows左下方,“开始”-“程序”-“MicrosoftOffice”-"MicrosoftOfficeExcel2003",打开Excel,如下图示。 VBA编程步骤2:点击按下图所示,点击菜单“工具”-“宏”-“VisualBasic编辑器” VBA编程步骤3:然后会出现“VisualBasic编辑器”窗体,如下图示 VBA编程步骤4:你已经启动了VB编程环境,这就是你的编程平台。 VBA编程步骤5:按下图所示,点击“VisualBasic编辑器”中的菜单“插入”-“用户窗体” VBA编程步骤6:接着出现“可编辑窗体”,如下图所示 VBA编程步骤8:红色圈内的句点就是操作手柄。当然,你也可以对窗体的显示的文字进行调整,这就需要在最左侧的属性窗口中修改它的“Caption”属性,考虑到这时编程入门,仅仅是教大家一个简单的编程流程,所以我就不多废话了。 VBA编程步骤9:接着,用鼠标单击左侧“工具箱”内的“命令按钮控件”,如下图所示 VBA编程步骤10:此时,鼠标光标会变成一个“十字准星”和“命令按钮”状,因鼠标形状无法截图,此处就不贴图了。你可以用鼠标拖动,在可编辑窗体上绘制一个任意大小的命令按钮。如下图示: VBA编程步骤11:同样,这个“命令按钮”四周也有8个操作手柄,你可以用鼠标来调整它的大小。

VBA编程步骤12:最关键的时刻到了,马上就可以进行编程了。用鼠标双击“命令按钮CommandButton1”,会出现如下窗口 VBA编程步骤13:这个就是代码编写窗口,蓝色部分是子程序的开头及结尾,CommandButton1_Click()表示面向对象程序的对象及 事件触发描述,CommandButton1表示刚才你绘制的命令按钮, Click表示单击,合起来就是当命令按钮“CommandButton1”被鼠 标单击时就会触发这个程序里的代码。 VBA编程步骤16:此时,你已经完成了一个简单的ExcelVBA编程,你需要运行一下这个程序看看它是否如你所愿。你可以按下图 所示,点击“VisualBasic编辑器”上的红色框中的运行按钮 VBA编程步骤17:红色框中是“运行”按钮,绿色框中是“停止”运行按钮,图标就像MP3上的播放,停止键,应该很形象吧。 VBA编程步骤18:运行程序后应该出现如下结果 VBA编程步骤19:怎么样,大功告成了吧,原来编程就是这么简单,你也可以做程序员啊。 VBA编程步骤20:要停止程序运行你可以点击“VisualBasic编 辑器”上的“停止”运行按钮,也可以点击上图中消息框的橙色大 叉关闭按钮。 接下来你就可以保存你的编程成果了。如下图示,保存程序及excel工作簿。这不用我多说了吧,你们可都是聪明人。

EXCEL_VBA是什么意思

第1讲什么是EXCEL VBA 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很多,遇到问题,可以通过搜索,一般都能够找到。通过积累,逐渐就掌握了。一般需要三个月左右的时间。 第2讲EXCEL VBA的开发环境和开发过程转载 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 的应用

Excelvba入门教学教程

VBA 入门系列讲座 1.1 VBA 是什么 直到90年代早期,使应用程序自动化还是充满挑战性的领域.对每个需要自动 化的应用程序,人们不得不学习一种不同的自动化语言.例如:可以用excel 的宏语 言来使excel 自动化,使用word BASIC 使word 自动化,等等.微软决定让它开发出 来的应用程序共享一种通用的自动化语言 -------------------------- V isual Basic For Application (VBA ),可以认为VBA 是非常流行的应用程序开发语言 VASUAL BASIC 的子集.实际上VBA 是”寄生于”VB 应用程序的版本.VBA 和VB 的区别包 括如下几个方面: VB 是设计用于创建标准的应用程序,而VBA 是使已有的应用程序(excel 等)自动化 VB 具有自己的开发环境,而VBA 必须寄生于已有的应用程序. 要运行VB 开发的应用程序,用户不必安装VB,因为VB 开发出的应用程 序是 可执行文件(*.EXE ),而VBA 开发的程序必须依赖于它的”父”应用 程序, 例如excel. 尽管存在这些不同,VBA 和VB 在结构上仍然十分相似.事实上,如果你已经了 解了 VB,会发现学习VBA 非常快.相应的,学完VBA 会给学习VB 打下坚实的基 础.而且,当学会在excel 中用VBA 创建解决方案后,即已具备在 word access OUTLOOK FOX PRO P ROWER POINT 中用VBA 创建解决方案的大部分知识. VBA 一个关键特征是你所学的知识在微软的一些产品中可以相互转化 . VBA 可以称作excel 的“遥控器”. VBA 究竟是什么?更确切地讲,它是一种自动化语言,它可以使常用的程序自动 化,可以创建自定义的解决方案. 此外,如果你愿意,还可以将excel 用做开发平台实现应用程序. 1.2 Excel 环境中基于应用程序自动化的优点 也许你想知道VBA 可以干什么?使用VBA 可以实现的功能包括: 使重复的任务自动化. 自定义excel 工具栏,菜单和界面. 简化模板的使用. 自定义exceI 使其成为开发平台. 创建报表. 对数据进行复杂的操作和分析. 1. 2. 3. 1. 2. 3. 4. 5. 6.

ExcelVBA语法基本

第2章VBA 语法基础 和其他编程语言类似,VBA 程序代码也是有基础语句组成的。在本章中,将结合具体的例子来介绍V BA 语法的基础内容。主要包括输入、输出语句、分支结构和循环结构等。在讲解各例子的时候,将详细分析例子的应用范围。 2.1 输入和输出语句 在本小节中,将详细讲解最基础的语法结构:顺序结构。顺序结构不需要使用特殊的控制语句,编辑工具按照用户编写的程序语句依次编译,依次执行。本小节中,将详细讲解最基础的顺序语句:输入和输出语句。 案例 8 输出数据表 1.功能说明 在E xcel VBA 中,用户可以使用P rint 方法输入各种类型的数据。同时,用户可以在程序代码中设置不同的输出,来检测程序代码。 2.语法说明 在E xcel VBA 中,Print 方法组要应用于D ebug 对象,其语法格式如下: Debug.Print [outputlist] 参数outputlist 表示需要打印的表达式或列表。如果省略参数,则打印空白行。Print 方法先计算表达式的数值,然后输出结果。在o utputlist 参数中还可以使用分隔符,格式 化输出的结果,分隔符有以下几种: ?Spc(n):插入n个空格到输出数据之间;

?Tab(n):移动光标到适当位置,n 为移动的列数; ?分号:表示前后两个数据项连在一起输出; ?逗号:以14 个字符为一个输出区,每个数据输出到对应的输出区。3.案例说明 本例使用P rint 方法向V BE 的立即窗口中输出数据表。 4.编写代码 输出数据表的代码如下: Sub GetNumbers() Dim i As Integer

excel VBA编程入门教程

excel VBA编程入门教程 回看到“excel 编程入门教程”求助贴,不料被别人捷足先登。没想到今天又看到这个求助经 验贴,而且又有优先评优支持当然要领取了。本人也算上个世纪的编程老鸟,虽然对于当前 的主流技术不是非常精通,但是对于Excel VBA,还是略知一二的。下面就来和大家分享一 下Excel VBA编程入门经验。 工具/原料 熟练操作Excel,有一定得VB编程经验,别说你的电脑没装office啊步骤/方法 点击Windows左下方,“开始”-“程序” -“Microsoft Office”-"Microsoft Office Excel 2003", 打开Excel,如下图示。 点击按下图所示,点击菜单“工具”-“宏”-“Visual Basic 编辑器”

然后会出现“Visual Basic 编辑器”窗体,如下图示 你已经启动了VB编程环境,这就是你的编程平台。 按下图所示,点击“Visual Basic 编辑器”中的菜单“插入”-“用户窗体”

接着出现“可编辑窗体”,如下图所示 上图,红色框中所示为“可编辑窗体”,你可以在上面进行可视化编程,就类似于我们现实生活中的画布,你可以在窗体上通过左侧绿色框内的“工具箱”绘制命令按钮、文字框、标签等编程控件。你也可以通过鼠标点击红色框中窗体外围的8个的操作手柄,拖动窗体的大小,直观形象的进行可视化编程。操作手柄如下图示

红色圈内的句点就是操作手柄。当然,你也可以对窗体的显示的文字进行调整,这就需要在最左侧的属性窗口中修改它的“Caption”属性,考虑到这时编程入门,仅仅是教大家一个简单的编程流程,所以我就不多废话了。 接着,用鼠标单击左侧“工具箱”内的“命令按钮控件”,如下图所示 此时,鼠标光标会变成一个“十字准星”和“命令按钮”状,因鼠标形状无法截图,此处就不贴图了。你可以用鼠标拖动,在可编辑窗体上绘制一个任意大小的命令按钮。如下图示: 同样,这个“命令按钮”四周也有8个操作手柄,你可以用鼠标来调整它的大小。 最关键的时刻到了,马上就可以进行编程了。用鼠标双击“命令按钮CommandButton1”,会出现如下窗口

(完整word版)ExcelVBA编程实例(150例)

主要内容和特点 《ExcelVBA编程入门范例》主要是以一些基础而简短的VBA实例来对ExcelV BA中的常用对象及其属性和方法进行讲解,包括应用程序对象、窗口、工作簿、工作表、单元格和单元格区域、图表、数据透视表、形状、控件、菜单和工具栏、帮助助手、格式化操作、文件操作、以及常用方法和函数及技巧等方面的应用示例。这些例子都比较基础,很容易理解,因而,很容易调试并得以实现,让您通过具体的实例来熟悉ExcelVBA编程。 ■分16章共14个专题,以具体实例来对大多数常用的ExcelVBA对象进行讲解;■ 一般而言,每个实例都很简短,用来说明使用VBA实现Excel某一功能的操作; ■各章内容主要是实例,即VBA代码,配以简短的说明,有些例子可能配以必要的图片,以便于理解; ■您可以对这些实例进行扩充或组合,以实现您想要的功能或更复杂的操作。 VBE编辑器及VBA代码输入和调试的基本知识 在学习这些实例的过程中,最好自已动手将它们输入到VBE编辑器中调试运行,来查看它们的结果。当然,您可以偷赖,将它们复制/粘贴到代码编辑窗口后,进行调试运行。下面,对VBE编辑器界面进行介绍,并对VBA代码输入和调试的基本知识进行简单的讲解。 激活VBE编辑器 一般可以使用以下三种方式来打开VBE编辑器: ■使用工作表菜单工具一一宏一一Visual Basic编辑器”命令,如图00-01所示; ■在Visual Basic工具栏上,按“ VisualBasic编辑器”按钮,如图00-02所示; ■按Alt+F11组合键。

图00-01 :选择菜单工具——宏——Visual Basic编辑器”命令来打开VBE编辑器 图00-02 :选择Visual Basic工具栏上的“VisualBasic编辑器”命令按钮来打开VBE编辑器 此外,您也可以使用下面三种方式打开VBE编辑器: ■在任一工作表标签上单击鼠标右键,在弹出的菜单中选择查看代码”,则可进入VBE编辑器访问该工作表的代码模块,如图00-03所示; ■在工作簿窗口左上角的Excel图标上单击鼠标右键,在弹出的菜单中选择查看代码”,则可进入VBE编辑器访问活动工作簿的ThisWorkbook代码模块,如图00-04所示; ■选择菜单工具一一宏一一宏”命令打开宏对话框,若该工作簿中有宏程序,则单击该对话框中的编辑”按钮即可进行VBE编辑器代码模块,如图00-05所示。

Excel_VBA编程常用实例(150例)

Excel_VBA编程常用实例(150例) 主要内容和特点 《ExcelVBA编程入门范例》主要是以一些基础而简短的VBA实例来对ExcelV BA中的常用对象及其属性和方法进行讲解,包括应用程序对象、窗口、工作簿、工作表、单元格和单元格区域、图表、数据透视表、形状、控件、菜单和工具栏、帮助助手、格式化操作、文件操作、以及常用方法和函数及技巧等方面的应用示例。这些例子都比较基础,很容易理解,因而,很容易调试并得以实现,让您通过具体的实例来熟悉ExcelVBA编程。 ■ 分16章共14个专题,以具体实例来对大多数常用的ExcelVBA对象进行讲解; ■ 一般而言,每个实例都很简短,用来说明使用VBA实现Excel某一功能的操作; ■ 各章内容主要是实例,即VBA代码,配以简短的说明,有些例子可能配以必要的图片,以便于理解; ■ 您可以对这些实例进行扩充或组合,以实现您想要的功能或更复杂的操作。VBE编辑器及VBA代码输入和调试的基本知识 在学习这些实例的过程中,最好自已动手将它们输入到VBE编辑器中调试运行,来查看它们的结果。当然,您可以偷赖,将它们复制/粘贴到代码编辑窗口后,进行调试运行。下面,对VBE编辑器界面进行介绍,并对VBA代码输入和调试的基本知识进行简单的讲解。 激活VBE编辑器 一般可以使用以下三种方式来打开VBE编辑器: ■ 使用工作表菜单“工具——宏——Visual Basic编辑器”命令,如图00-01所示;■ 在Visual Basic工具栏上,按“Visual Basic编辑器”按钮,如图00-02所示;■ 按Alt+F11组合键。

图00-01:选择菜单“工具——宏——Visual Basic编辑器”命令来打开VBE编辑器 图00-02:选择Visual Basic工具栏上的“Visual Basic编辑器”命令按钮来打开VBE编辑器 此外,您也可以使用下面三种方式打开VBE编辑器: ■ 在任一工作表标签上单击鼠标右键,在弹出的菜单中选择“查看代码”,则可进入VBE编辑器访问该工作表的代码模块,如图00-03所示; ■ 在工作簿窗口左上角的Excel图标上单击鼠标右键,在弹出的菜单中选择“查看代码”,则可进入VBE编辑器访问活动工作簿的ThisWorkbook代码模块,如图00-04所示; ■ 选择菜单“工具——宏——宏”命令打开宏对话框,若该工作簿中有宏程序,则单击该对话框中的“编辑”按钮即可进行VBE编辑器代码模块,如图00-05所示。

ExcelVBA

VBA帮助 (摘自Office2000 VBA帮助) 一、VBA入门知识 1、激活工作簿 2、创建新工作簿 3、打开工作簿 4、用编号引用工作表 5、用名称引用工作表 6、将文档保存为 Web 页 7、用 A1 样式的记号引用单元格和单元格区域 8、用编号引用单元格 9、引用行或列 10、用快捷记号引用单元格 11、引用命名单元格区域 12、按相对于其他单元格的方式来引用单元格 13、用 Range 对象引用单元格 14、引用工作表上的所有单元格 15、引用若干单元格区域 16、在单元格区域中循环 17、选定和激活单元格 18、处理三维区域 19、处理活动单元格 20、在工作表上使用 ActiveX 控件 21、在文档中使用 ActiveX 控件 22、创建自定义对话框 23、在窗体上使用 Microsoft Office Web 组件 24、内置对话框参数表 25、使用 Microsoft Excel 对象的事件 26、在 Visual Basic 中使用 Microsoft Excel 工作表函数 27、处理形状(图形对象) 28、在某一 Microsoft Office 应用程序中控制其他 Microsoft Office 应用程序 29、OLE 程序标识符 30、关于数字签名 31、启动 Microsoft Excel 时不运行“自动执行宏” 32、焦点 二、了解对象、属性、方法和事件 1、了解对象、属性、方法和事件 2、Application 对象 3、Workbook 对象 4、Workbooks 属性 5、Range 对象 6、Range 属性 7、Cells 属性 8、Caller 属性 9、Offset 属性 10、Rows 属性 11、Activate 事件 12、Activate、 Deactivate 事件 13、Activate 方法 14、WorkbookActivate 事件 15、WindowActivate 事件

ExcelVBA类代码实例集锦

1, 类动态数组控件 ‘ 2007VBA技巧 ‘快盘更新类类动态数组控件.xlsm ‘ 2013-6-16 类模块代码: Public WithEvents frm As https://www.wendangku.net/doc/422854529.html,erForm Public WithEvents myText As MSForms.TextBox Public Index As Integer Private Sub myText_Change() Index = Mid(https://www.wendangku.net/doc/422854529.html,, 8) If frm.Controls("Textbox" & Index) <> "" Then https://www.wendangku.net/doc/422854529.html,bel1.Caption = " 控件事件:Change" & vbCrLf & _ " 控件名称:" & frm.Controls("Textbox" & Index).Name & vbCrLf & _ "Text 属性:" & frm.Controls("Textbox" & Index).Text End If Private Sub myText_DblClick(ByVal Cancel As MSForms.ReturnBoolean) End Sub

Index = Mid(https://www.wendangku.net/doc/422854529.html,, 8) If frm.Controls("Textbox" & Index) <> "" Then https://www.wendangku.net/doc/422854529.html,bel1.Caption = " 控件事件:DblClick" & vbCrLf & _ " 控件名称:" & frm.Controls("Textbox" & Index).Name & vbCrLf & _ "Cancel 属性:" & Cancel End If End Sub KeyUp事件与Change事件重迭,二者取其一 Private Sub myText_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Index = Mid(https://www.wendangku.net/doc/422854529.html,, 8) If frm.Controls("Textbox" & Index) <> "" Then https://www.wendangku.net/doc/422854529.html,bel1.Caption = " 控件事件:KeyUp" & vbCrLf & _ " 控件名称:" & frm.Controls("Textbox" & Index).Name & vbCrLf & _

EXCEL_VBA应用教程

EXCEL VBA应用教程--第1讲什么是EXCEL VBA 第1讲什么是EXCEL VBA 作者:https://www.wendangku.net/doc/422854529.html,/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是无法运行的。

相关文档