关键词不能为空

当前您在: 主页 > 英语 >

EXCEL_VBA是什么意思

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-02 07:12
tags:

-

2021年2月2日发(作者:chemical)




1




什么是


EXCEL VBA



1.1


为什么要学习


EXCEL VBA


现在,


财务软件已经趋于普及,


会计人员的工作效率大幅度提高,减轻了会计人员大工作强度。


财务软件的优点是从数


据的输入、处理、输出实现了一体化,在会计数据的利用方面,尽管财务软件一直都作改 进,但客观上还是满足不了管理工


作但要求。因此,作实际工作中,

EXCEL


被大量应用,


EXCEL


的特点是简单易用,操作灵活,大大地弥补了会计软件地不


足。但是,


EXCEL


处理数据的缺点是,每一步都要人工操作和控制,对重复性的工作, 每次都要重复去作。




EXCEL VBA


能够将重复的工作编写成程序,这样就能够提高效率和避免人为操作的错误。




1.2


什么是


VBA


VBA(Visual Basic For Applications)


是微软开发出来在其桌面应用程序中 执行通用的自动化


(OLE)


任务的编程语言。


VBA



Visual


Ba sic


的一个子集


,VBA


不同于


VB


,原因是


VBA


要求有一个宿主应用程序才能远行(需要在


EXCEL


等软件 的运


行下才能运行)


,而且不能用于创建独立应用程序。而


VB


可用于创建独立的应用程序。


VBA< /p>


可使常用的过程或者进程自动


化,可以创建自定义的解决方案,最 适用于来定制已有的桌面应用程序。




通常意义上的


VBA


就是在


Offi ce


中包含着的一种加强


Office


功能的


Basic


语言。


经过发展,< /p>



Office


中,

Word



Excel



Access



PowerPoint


等多个软件都有了自己的程序设计语言,


分别称为


WordBasic



ExcelBasic



AccessBasic



PowerPointBasic


(



Outlook


中的开发语言为


Visual Basic Scripting Edition)


。通常统一称为


VBA



VB for Application





本讲座,主要基于


EXCEL VBA


进行讲解。





VBA



V B


的区别包括如下几个方面


:






1




VB


是设计用于创建标准的应用程序


,



VBA


是在已有的应用程序


(EXCEL



)


下运行, 实行有关操作、处理、查


询等的自动化,提高效率。






2



VB


具有自己的开发环境


,



VBA


必须寄生于已有的 应用程序(如


EXCEL






3


)要运行


VB


开发的应用程序


,


用户不必安装


VB,


因为


VB


开发出的应用程序是可执行文件


(*.EXE),

可独立运行。而


VBA


开发的程序必须依赖于它的





应用程序

< p>
,


例如


EXCEL



如编写的


EXCEL VBA


程序,


没有安装


EXCEL


是无法运行的。




虽然有一些不同


, VBA



VB


在结构上仍然十分相似。 如果你已经对


VB


有一些基础


,


学习


VBA


就非常容易。当掌握


EXCEL VBA


后,对


WORD



ACCESS


等中应用


VB A


创建解决方案,也就基本掌握了。






1.3


应用


EXCEL VBA


的好处







EXC EL


中,使用


VBA


可以实现的功能主 要包括


:






1


)创建 报表。






2


)对数据进行复杂的操作和分析。






3


)使重复的工作自动化。






4


)自定 义


EXCEL


工具栏


,


菜单和界面。






5


)自定义


EXCE L,


使其成为开发平台。







EXC EL


作为开发平台有如下原因


:






1



EXCEL


本身功能强大


,


包括打印


,


文件处理


,


格式化和文本编辑。大家在


EXCEL


使用中已经掌握了


EXCEL


基本概


念、操作方法,采用


EXCEL VBA


能够更加提高效率,使用者容易接受。






2



EXCEL


内置大量函数和处理功能,通 过


EXCEL VBA


能够高效率地简单应用。



(< /p>


3


)可连接到多种数据库,便于与财务软件等交换数据。




4



VBA


简单易学,容易被会计人员及其管理人员掌握,易于大范围推广应用。 用其他语言开发应用程序


,


一半的工


作 是编写一些基本功能的模块


,


包括文件的打开和保存、


处理、


打印等。


而用


E XCEL


作为开发平台


,


则由于


EXCEL


已经具备


这些基本功能

< p>
,


你要做的工作只是使用它。








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


程序无法运行。


在< /p>


Excel


菜单中,选择工具——宏——安全性,进入安全性设置 ,一般选择“中”


,如果不行就选择“低”


< br>



2.3 VBE


的应用




1



进入


VBE


编辑器后,就能编写有关低界面后程序。


VBE


编辑器主要包括 以下部分:



1


、代码窗口。就是在这 里写


VBA


的代码,也是在这里查看代码的。

< br>




2


、对象窗口。可以在这里设定窗体的界面(如果使用了窗体的话)


,在这里能很直观地 设定窗体各个控件的布局。





3


、对象浏览器。在这里可以查看所有对象库、特定对象或你自己的 工程,包括所有的对象的列表与每个对象的成员列


表。





4


、工程 资源管理器。在这里,我们可以很方便地管理工程中的模块、类模块与窗体,还可以很容易地在代码与对象间


切换。





5


、属性窗口。在这里可以很简单地设定很多对象相关的属性,简单 到只要用鼠标选择即可。





6


、工具箱。在插入窗体后,可以从工具箱添加各种控件。

< p>




7


、立即窗口。其主要工作是:






1


)在开发过程中,用



输出的内容就在此显示 。





(< /p>


2


)当代码是


Break


模式时,查看对象和变量的状态。






3


)用< /p>


?


加上语句,就可以看到运行的结果,在很多情况下比用


msgbox


报出方便多了。














2.4


使用


VBA


帮助和寻找资源

< p>



帮助。


VBA


的帮助中包含


Excel


所有属性、对象、方法 等的说明,学习


VBA


的过程中,经常查阅

VBA


帮助,


对了解


Excel< /p>


所有属性、对象、方法很有帮助。在查看别人的代码时,对不熟悉的部分,只要将光标移到 其中,再按


F1


键,


就能快速查获到相 关的帮助。我们还可以在帮助的应答向导中,键入相关的关键词,来查找我们需要的内容。





2.


网络的搜索。


网络的好处就在于信息量之巨大,


而要查找到我们 需要的信息时,


最基本的就是用好搜索。


通过如百度、


Google


等,只要键入合适用的关键词,就能找出不少相关的信息。












2.5 EXCEL VBA


的开发过程



1. EXCELVBA


开发过程简介





在开发一个具体的业务程序时,需要对以下问题有个大致的考 虑。





1 )


使用者。这决定了程序的操作难度及界面感观。





2)


数据 来源和保存在哪里。这决定了程序的结构。





3)


如何操作。这将决定程序的界面 和细节。





4)


数据处理的结果。最终决定程序的价值。












2.


认识不同的控件





开始时关闭所有工作簿

< p>
,


打开一个新工作簿并另存为一个具体名字,一般用项目名称。在工具栏上 单击鼠标右键


,


从快捷


菜单中选择



窗体



显示



窗体



工具栏

< p>
.


其中有


16


个控件,只 有


9


个可放到工作表内。





1


)标签:它用于表现静态文本。





2


)分组 框:它用于将其他控件进行组合。





3


)按钮:用于执行宏命令。





4


)复选 框:它是一个选择控件,通过单击可以选择和取消选择,可以多项选择。





5


)选项 按钮:通常几个选项按钮组合在一起使用,在一组中只能选择一个选项按钮。





6


)列表 框:用于显示多个选项并从中选择。只能单选。





7


)组合框:用于显示多个选项并从 中选择。可以选择其中的项目或者输入一个其它值。





8


)滚动条:不是你常见的来给很长 的窗体添加滚动能力的控件,而是一种选择机制。例如调节过渡色的滚动条控件。


包括水 平滚动条和垂直滚动条。





9


)微调控件:也是一种数值选择机制,通过单击控件的箭头来选择数 值。例如改变


Windows


日期或时间就会使用到微


调控件。






3.


向工作表添加控件





4.


设置控件的特性





5.


给控件命名







6.


使用用户窗体


< br>如果希望创建专业级的应用程序


,


并且方便用户输入数据


,


那么应该使用用户窗体。用户窗体可以作为程序的对话框和窗



.


向用户窗体添加控件基本类似于向 工作表添加控件。





在对用户窗体设计完成后,可以对其进行预览,方法是在


VBA


编辑器中选择该窗体,单击“运行”菜单中的三角符号


“运行子过程


/


用户窗体”


,三角符号在

VBA


工具栏上也可能看得到,旁边是一个垂直的等于符号,最右边是个小正方形符


号,它们类似于录音机上的按钮。运行窗体的另一个方法是按


F 5


键。




常量、变量与数据类型转载




数据是程序运行的基础,在


EXCEL VBA


中,大量的数据是中


EXCEL


中的,但在程序运行中 ,还会有一些程序的控制


数据。


要掌握一种程序语言,


必须了解该语言的数据类型有哪些以及该数据是如何声明的,


以便得知该 数据是使用哪种数据


类型、该数据所能允许使用得最大和最小范围(生存期)

< p>
、以及该数据占用多少内存空间。这样程序执行时才不会发生数据


溢出(< /p>


Overflow


)和浪费内存空间得现象。


执行程序时,必须先将程序和数据加载到计算机的内存(


RAM


)中才能执行,若该数据会随着程序的执行而更改其值,



2



我们称之为变量(


Variable



,而不发生变化的则时常量。常 量指的时数据类型特定值的文字表示,常量被用来指定给变量当


作变量值。程序运行时, 语句中的每一个常量,都会分配到内存空间来存放其值。



3.1



标识符



变量和常量需要用一个名称来 标识,这就是标识符。标识符名称第一个字符允许以大小字母、


_


或者中文名称(一般不


建议用中文名称)开头,后面的字符可接


A~Z



a~z


< br>0~9



_


等字符。

< p>


3.2



保留字



保留字又称关键词(


Keyword



,是程序语言中事先赋予某个 标识符的一个特别意义,因此就不得再重复赋予不同的用


途。


其 用法又一定的规范,


在编写程序时,


这些保留字若出现在程序中 的语句时会以蓝色标示,


以提醒用户这些标识符是属


于系统保留 字不可误用。



这后面的内容中,我们逐步学习涉及到的相关保 留字,如


if



then


等等。



3.3


常量



所谓


“ 常量”


是指数据类型特定值的文字表示。


常量被用来指定给变量 当作变量值。


程序运行时,


语句中的每一个常量,


都会分配到内存的空间来存放其值。



3.3.1


整数常量



整数常量由数字、


+


(正)


、—(负)所组成。整数常量的表示方 式由:二进制、八进制、十进制、十六进制。十进制


整数常量是一串十进制数,十六进制 常量是


&H


后面跟着一串十六进制数字(


0~9



A~F


< br>,八进制常量则是


&O



O


为字母)


后面跟着一串八进制数字(


0~7



。十进制常量直接以阿拉伯数字(


0 ~9


)来表示,二八进制常量和十六进制常量则以二进制


数表示 整数常量。常量的类型是由其值或是接在其后的数据类型字符来决定。如果未指定数据类型字符,则在

< p>
Integer


类型


范围内的值会采用

< p>
Integer


整数数据类型;超出


Intege r


范围大小的值则采用


Long


长整数 数据类型。由于一般人比较习惯十


进制数,本书所用的数值常量,大都采用十进制数表示 。



3.3.2


浮点常量



浮点常量是整数常量后面跟 着选择性的小数点和尾数,以及选择性的基底为


10


的指数。默 认浮点常量是属于


Double


数据类型。如果指定

< p>
Single



Double


Decimal


数据类型字符,则常量就属于该数据类型 。



数据常量的各数据类型所占的内存空间与可表示的大小范围 如表所示。



浮点常量



数据类型




内存




范围




< /p>


Byte


(字节)


1Byte0~255


的整数(这种数据类型占用的内存空间最少)




Short


(短整数)


2Bytes



32 768~32 767


的整数




Integer


(整数)


4 Bytes



2 147 483 648~2 147 483 647


的整数(约有


10


位数 的正负整数)




Long

< p>
(长整数)


8Bytes



9 223 372 036 854 775 808~9 223 372 036 854 775 8 08


的整数(约有


19


位的正负整数)




Single

(单精度)


4Bytes


正数:


1 .401298


×


E-45



3.402823


×


E+38


负数:-


3.402823


×


E+38


~-


1.401298


×


E-45


(有效位数为


7

< br>位,可以表示小数)




Dou ble


(双精度)


8Bytes


正数:


4.94


×


E-324



1.79769313486231


×


E+308


负数:-


1.79769313486 231


×


E+308


~-


4.94


×


E-324


(有 效位数为


15


位,可以表示小数)




Decimal


(货币类型)


16Bytes


整数范围:


+/



79 228 162 514 264 337 593 543 950 335


浮点数范围:


+/



7.92287593543950335


最小非零值范围:


+/



0.0001

< br>(有效位数为


29


位,可以表示小数)

< br>




3.3.3


字符串常量





字符串常量由一连串的字符组合而成,包括中文、英文字母、 空格、数字、特殊符号。字符串常量可细分成:


Char


(字符 )


数据类型和


String


(字符串) 数据类型,其所占的内存空间和允许的范围大小如表所示。



字符串常量



数据类型



内存



范围




Char


(字符)

< br>2Byte0~65535


的整数,为


Unicode< /p>


码(每一个码代表一个字符)




String


(字符串)变动长度


0~20< /p>


亿个


Unicode


字符







字符串常量必须使用“”


”双引号头 尾括起来。




3.3.4


布尔常量



布尔常量只有两个值,一个 为“


True



、另一个为“


False



,分别表示真与假、开与关、


Yes



No


等两 种状态。


Boolean


数据


类型常被 使用在关系表达式及逻辑表达式条件式中,用来判断条件成立与否。




3.3.5


日期常量



日期常量代表以

< p>
Date


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



日期常量



数据类型



内存



范围



Date


(日期)


8Bytes1/1 /0001 0



00



00~12/31/1999 11



59



59 PM



如果 省略日期值,则会假设为公元


1



1< /p>



1


日。如果省略时间值,则会假设为< /p>


12



00


:< /p>


00 AM


。例:



#11:20:00 PM#





















(仅指定时间)



#9/9/2004#
























(仅指定日期)



#9/9/2004 12:45:00 PM#













(同时指定日期及时间)




3.3.6 variant


Variant


字符串类型的存储空间为


22


字节加上字符串的长度, 其取值范围与变长字符串数据类型的取值范围相同,缺省值为



3



Empty








Variant


数字型的存储空间为


16< /p>


字节,其取值范围与


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 - -494E-324


正值范围


:4.94E-324 - 1.79769313486232E308



Currency



8


字节




-922337203685477 - 922337203685477



Decimal



14


字节




不包括小数时


:+/-792287593543950335


包括小数时


:+/7.92287593543950335



Date



8


字节



< /p>


1000



1



1




- 9 999



12



31





Object



4


字节




任何引用对象



String(


长字符串


)10


字 节


+1


字节


/


字符




0 -



20


亿




String(


固定长度

< p>
)


字符串的长度






1 -



65400


Varient


(数字)


16


字节




Double


范围内的任何数值




Varient


(文本)

< p>
22


字节


+1


字节


/


字符




数据范围和变长字符串相同





3.5


变量的声明方式



在程序中,要使用变 量,必须先使用


Dim


声明确定其数据类型,若在声明时未设置 其初值,数值变量默认为


0



字符串变 量默认为空字符串。



使用


Dim


声明变量的方式如下:



Dim sum As Integer














声明


sum


为整型变量,初值默认为


0


Dim string1,string2 As



String











同时声明


string1

< p>


string2


为字符串类型变量初值空字符串



Dim cost As Integer =50









声明< /p>


cost


为整型变量,并设初值为


50




4




运算符转载



2009-02-03 17:30:04


阅读


26


评论


0




字号:大中小



订阅




运算 符(


Operator


)用来指定数据做何种运算。运算符按照 运算时所需要的操作数(


Operand


)数目分成:单元运< /p>


算符(


Unary Operator



,如:﹣


9


;二元运算符(

< p>
Binary Operator



,如


a+b


为一个加法表达式(


Expressio n



,其中


a



b


为操作数,加号为运算符,由于加号运算符在运算是需要两 个操作数,因此称为二元运算符。




4.1


算术运算符



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



算术运算符与表达式





运算符符号




运算符




表达式




+


相加运算符





i=j+k



-


相减运算符





i=j



k



*


相乘运算符





i=j*k


/


相除运算符





i=j/k




整型除法运算符




i=jk



Mod


取余数运算符




i=jMod k




^


指数运算符





i=5^2




4.2


关系运算符



关系表达式的功能式用来 比较字符串或数值的大小。关系表达式经过运算后,其结果可以为真(


True


)或为假



False



,通过其结果来决定程序的执行流程。



关系运算符与关系表达式



关系运算符




意义



数学式




关系表达式



= =


相等





A=B



A= =B



4



<>


不相等




A



B



A<>B



>


大于




A>B




A>B



<


小于




A




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



30


(大于


10

< p>
岁且小于


30


岁)


,其逻 辑表达式的写法如下:



If



age>10



And (age<=30) then



其中(


age>10


)和(


age<=30


)两者为关系表达式 ,两者间利用


And


逻辑运算符来连接。同样,逻辑表达式的运 算结果只有


真(


True


)或假(


False



。逻辑表达式主要有两种类型 的表达方式:




And



Or



Not

< p>


XOR


逻辑运算符




AndAlso/OrElse


逻辑 运算符




例如,若

< br>a


值为


6


,求下列逻辑运算后的 结果:




(a>1) And (a<=10)




















‘检查


1



10,


结果为


True



(a<1) Or (a>=5)


























‘检查


a


是 否小于大于


5,


结果为


True



4.4


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




当需要指定某个变量的值、


将某个变量或某个表达式的结果指定给某 个变量时,


就必须使用赋值运算符来完成。


赋值运算符


是以符号(


=


)来表示。








5




流程控制语句转载



2009-02-03 17:31:02


阅读


29


评论


0




字号:大中小



订阅




一个 程序的流程,


都是由顺序结构、


选择结构和循环结构三者组合而 成。顺序结构的特点是语句由上而下逐行地执行。选择


结构是当程序执行时,

< p>
欲改变程序执行的顺序时使用。


循环结构俗称重复,


当程序中有某个语句块需要循环执行时使用。



此,设计一个 具有结构化的程序,除了必须具有清晰的逻辑分析能力外,要使用以上所述的三种结构来实现。

< br>



5.1







If


语句











“选择 结构”指当程序执行时,需要改变执行的流程时,则必须使用条件来做判断,若满足条件(即结果为


True



则执行某个语句段,若不满足条件(即结 果为


False


)则执行另一个语句段。





?


Th en


?


Else


语句

< br>



在设计程序时,


常会碰到< /p>


“如果?那么?”


或时


“如果?那么?否 则?”


的情况,


这种情况便要使用


If


?


Then


?或是

If


?


Then


?


Else


?语句来完成。由下面语法可知,若满足条件就执行“


Then


语句块”


,不满足条件


n


就执行“


Else


语句块”


。其中条件可


为关系表达式或多个关系表达式中用逻辑表达式连接的混 合表达式,其语法形式如下所示:




If







(


条件



) Then [Then


语句块


]



Else [Else


语句块


]



5




End If














?


Then


?


ElseIf


语句

< br>



设计程序时,若碰到“如果?那么?否则如果?那么 ?否则”


,便需使用


If


?

< p>
Then


?


Elseif


?


Then


?


Else


?语句来完成。如下


面语法,若条件


1


的结果为


True


,则执行“


Then


语句块


1


< br>,接着继续执行


EndIf


后面的语句;若条件


1


的结果为


False


,则


检查条件


2


的结果,


若为


True


则执行



ElseIf


语句块


2


,接着继续执行


EndIf


后面 的语句。


一直到所有结果的条件都不满足


时,才执行

< p>
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

< br>或嵌套的


If


?


Then


?


Else


来完成,但是太多的


If


会使得程序的


复杂度提高,造成不易阅读且难维 护;若改用下面的


Select


Case

语句,程序不但看起来简洁而且易维护。如下面语法,若


表达式的结果满足


value1


,则执行“


Value1


语句块”


,再继续执行


End


Select


后面的语句;若表达式的结果不满足


va lue1



满足


value2



,则执行“


Value2

语句块”


,依次类推;若都不满足所设置的


Case va lue


值,便执行“


Value2


语句 块”


Else


语句


块后,再继续执行< /p>


End Select


后的语句。其语法形式如下:




Select Case


表达式




Case value1



[value1


语句块


]



?




Case value2










[walue2


语句块


]



End Select



表达式可以为变量、数值或字符串表达式,但要注意


Case

< p>
子句中的


value


必须和表达式的数据类型一致 。




5.3 IIf


选择语句



< br>IIf


式一个双重选择函数,如下面语法,若表达式的结果为

True


,则返回


V1


。否则返回


V2


。返回值可以为数值、字符串或


表 达式。


IIf


函数里面若还有


IIF< /p>


函数就构成嵌套选择结构。其语法形式如下所示:




IIf


(表达式,

< br>V1



V2


< br>



5.4


循环语句




当程序执行时,需要将某个语句块执行多次时,便需要使用“循环结构”


。按照循环执行 次数确定是否分成


For


?


Next< /p>


语句


(每次执行循环次数确定)和


Do< /p>


?语句(次数由当时条件决定)两大类。





?


Next


语句




程序 设计时,若希望由某个值开始,每执行指定的语句块一次,便将该数值增(减)一值,若结果比终值还小(大)< /p>


,便继



6



续执行该语句块,直到不满足终值才离开该语句块,如重复显示某个数字


10


次、连续输入数据到数组等都必须使用下面语


法来 完成:




For counter = start To end [Step Increment]










语句块




[Exit For ]



语句块




Next For




start



Increment


为正。若


Incremen t=1



Step


参数可以省略。若< /p>


start>end



Step


不能省略,且


Increment


为负值。


Start



end


参数可以为小数。




Each< /p>


?


Next


语句




For Each


?


Next


语句和


For


?


Next


功能一样,当满足条件时,会将


F or


?


Next


间的语句执行一次,直 到不能满足条件为止。


如下面语法,当


group


(指对象的集合或数组)内至少有一个元素,就能进入


For Each


?


Next


循环。一旦进入循环,便会针< /p>



group


内的第一个元素来执行语句 块一次;若


group


内有更多元素,则循环内的语句块就会针 对每个元素来继续执行。当


各元素都执行一次后,循环便结束,继续执行


Next


语句后面的语句。其语法形式如下所示:




For Each element In group









语句块




[Exit For]



[


语句块


]



Next element



其中< /p>


element


为必要项,是一个变量名称,用来在集合或数组的 每个元素中重复。


Element


的数据类型必须是

< p>
group


中元素


的数据类型。

< br>group


为必要项,是一个对象变量,必须引用对象集合或数组


statement


为一选择项,介于


For Eac h


?


Nex


之间


的一行或数行语句,在


group


内的每个项目发生时执行一 次。




While


?


Loop


语句




设计程序时,当希望条件为


True


时才进入循环,执行循环内的语句块,直到碰到


Loop


再回到


Do


While

,检查是否满足条


件,若满足条件继续执行循环内的语句块,直到不满足才跳离循环 继续执行


Loop


后面的语句。因此,循环内必须有语句将


条件变为


False


,否则会变成无穷循环 而无法跳出。若想中途离开循环可在要离开的地方插入


Exit Do


即可。




Do While


(条件)




?




[Exit Do]



?




Loop




Until


?


Loop


语句




此语句和


Do While


?


Loop


语句都属于前测试循环,


两者使用上的 差异在于,


若不满足条件才进入循环时,


必须使用


Do Until


?


Loop


;若满足条件才进入循环时,才使用


Do While


?


Loop


。其语法形式如下:




Do Until


(条件)










语句块




[Exit Do]



7




语句块




Loop



5. Do


?


Loop While


语句













程序中使用循环时,若需要第


1


次进入循环时不必检查是否满足条件,而直接进入循环,第


2


次以后才需要检查


是否满足条件,当条件条件为

True


时,才能再进入循环执行,此时便需要使用


Do< /p>


?


Loop While


语句。因此此种 情况,循环


至少执行一次,是属于后测试循环。其语法形式如下:




Do









语句块




[Exit Do]



语句块




Loop While


(条件)




6. Do


?


Loop Until


语句



< br>此语句和


Do


?


LoopUnt il


语句都属于后测试循环,


两者使用上的差异在于,


若不满足条件才进入循环时,


必须使用


Do


?


Loop


Until

< br>。若满足条件才进入循环时必须使用


Do


?


Loop While


。其语法形式如下:




Do









语句块




[Exit Do]



语句块




Loop Until


(条件)












在实际应用中,前三种应用会多一些,通过具体多设置,一般 都能达到目的。因此,要把前三种掌握好。






6




函数转载



2009-02-03 17:32:56


阅读


39


评论


0




字号:大中小



订阅




6.1


函数概述


< br>函数


(function)


是能完成特定任务的相关语句 和表达式的集合。


当函数执行完毕时,


它会向调用它的语句返回 一个值。


如果不


显示指定函数的返回值类型,就返回缺省的数据 类型值。





函数









Sub


函数是以

Sub


?


End Sub


语句封闭 起来的程序块。每当该函数被调用时,


就会将存放在函数块内的语句执行一次。


执行中若碰到


End


Sub



Exit


Sub

< br>或


Return


便离开函数,回到调用此函数的下一个语 句继续望下执行。编写程序时,在模


块、


对象类模块和结构中定 义


Sub


函数。


模块内的


Sub


函数都默认为


Public

< br>,


表示可以从应用程序任何位置调用此


Sub

< p>
函数。


除了


Main


函数 外,其他函数是在被调用才执行。



Sub


函数定义的语法如下:



[Private



Public]Sub< /p>


函数名称(


[


参数类表

< br>]




[


程序块


]


[Exit Sub]


End Sub


Sub


函数是以


Public Sub



Private Sub


开头,最后以


End Sub


结束。当执行到


End Sub


后即返回紧接再原调用处的下一个语


句继续往下执行。若中途要离开函数,可使用


Exit Sub


语句。


< br>调用


Sub


函数的语法有下列两种方式:



语法


1


< br>Call


函数名称(


[


参数列表


]




语法< /p>


2


:函数名称(


[


参数列表


]



调用程序与被调用程序之间若无数据传递,参数列表可省略(即不传任何参数)


;若 不省略,参数列表的数目可以是一个或


一个以上的参数。




on


函数



除系统提供的内置函数外,还提供了日期、时间、字符串等函数,另外还可以使用


Function


?


End Function


函数来编写属于



8



自己的


Function

< p>
函数。



Sub


函数和< /p>


Function


函数两者都可以做参数传递,但两者使用上的主 要差异是


Sub


函数没有返回值,


Fu nction


函数则有返回


值。有关


F unction


函数的语法如下:



[Public



Private] Function


函数名称(


[


参数列 表


]




[As


数据类型


]


[


语句块


]


函数名


=


表达式



[Exit Function]


或(


Return


表达式)



End Function


6.2






测试函数



IsNumeric(x)

















是否为数字


,

返回


Boolean


结果,


Tru e or False


IsDate(x)




















是否是日期


,

返回


Boolean


结果,


Tru e or False


IsEmpty


x


















是否为


Empty,


返回

< p>
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)














去掉


st ring


左右两端空白



Ltrim(string)













去掉


string

< br>左端空白



Rtrim(string)













去掉< /p>


string


右端空白



Len(string)















计算< /p>


string


长度



Left(string, x)














string

左段


x


个字符组成的字符串



Right(string, x)













string

右段


x


个字符组成的字符串



Mid(string, start,x)










str ing



start


位开始的


x


个字符组成的字符串



Ucase(string)














转换为大写



Lcase(string)














转换为小写



Space(x)

















返回< /p>


x


个空白的字符串



Asc(string)















返回一个



integer

< p>
,代表字符串中首字母的字符代码



Chr(charcode)












返回



string

< br>,其中包含有与指定的字符代码相关的字符




6.5


转换函数



CBool(expression)




























转换为


Boolean




CByte(expression)





























转换为


Byte




CCur(expression)





























转换为


C urrency




CDate(expression)





























转换为


D ate




CDbl(expression)





























转换为


D ouble




CDec(expression)





























转换为


D ecemal




CInt(expression)





























转换为


I nteger




CLng(expression)





























转换为


L ong




CSng(expression)





























转换为


S ingle




CStr(expression)





























转换为


S tring




CVar(expression)





























转换为


V ariant




Val(string)





































转换为数据型



Str(number)




































转换为


String



6.6


日期函数





9



日期函数

















IsDate


语法:


IsDate< /p>



表达式)



功 能:


若该表达式为日期类型变量时,


返回


True



否则返回


False



范例:


check=IsDate(



2/21/1969


< br>)


‘返回


True



check=IsDate


(”


Hello




’返回


Fal se


Today


语法:


Today


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



Now


语法:


Now


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



Year


语法:


Year



datetime



;功能:返回公元年。范例:


n=Year


(”


2/12/1999






n=1999


Month


语法:


Month



datetime



;功能:返回


1~ 12


月份。范例


n=Month(


“< /p>


5/12/1969



)







n=5


Day

< br>语法:


Day



datetim e



;功能:返回日期。范例:


n= (



2/21/1969


< p>
)







n=21


MonthName


语法:


Mont hName


(月份)


;功能:返回相对应的月份名称。范例:< /p>


str= MonthName(3)



str=


三月



WeekDay < /p>


语法:


WeekDay



datetime



;功能:返回星期几,其值为


1~7


。若返回


1


,表示星期日;返回


2


表示星期一??依


次类推。范例:


n=Weekday


(”

3/14/2003






n=6


表示这天为星期五



WeekdayName


语法:


We ekdayName



n


< p>
;功能:返回一星期中的第几天。


n


< p>
1


则返回星期日;


n


为< /p>


2


返回星期一??依


次类推。范例:


str=WeekdayName



5





str=< /p>


星期四






7




操作工作簿转载



2009-02-03 17:33:51


阅读


50


评论


0




字号:大中小



订阅




1.


新建工作簿




Add


方法创建一个新的工作簿,并 添加到


Workbooks


集合中,新工作簿成为活动工作簿。






举例:












作用:新 建一个工作簿,并保存在


E:


盘上,文件名为

< br>





举例:











作用:新建一个工作簿,并保存在< /p>


E:


盘上,文件名为





2.


打开工作簿




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




(FileName,UpdateLinks,ReadO nly,Format,Password,


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


< /p>


在这些参数中,大多数参数很少用到


(


例 如,几个与打开文本文件有关的参数


)


。所有的参数中,除了< /p>


FileName


外都是可选


的。




参数


FileN ame


是所要打开的工作簿的文件名称。如果想要以只读的方式打开工作簿,则可将


ReadOnly


参数设置为


True





如果需要用 密码来打开工作簿,



PassWord


参数应该设置为该密码。


如果需要使用密码而您没有指定密码,


Excel


将弹出对


话框询问密码。




参数


AddToMru


指定将工作簿添加到最近使用的文件列表中,该参数值设置为


True


便添加该工作簿到最近使用的文件列表


中,该参数的缺省值为


False





举例:




(



作用:打开


e:

< br>工作簿文件。





10



举例:




FileName:=



作用与上相同。




举例:




FileName:=



举例:




FileName:=



增加了打开的密码。




3.


激活工作簿




要激活工作簿,就使用


activa te


方法,工作簿激活后,它将放在活动窗口中。




Workbooks(


工作簿名称< /p>


).activate



举例:




Workbooks(1).activate



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




4


.保存工作簿




保存指定工作簿:




Workbooks(


工作簿名称< /p>




保存当前工作簿:







5.


关闭工作簿




Close


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




关闭所有的工作簿:






关闭指定的工作簿:




Workbooks(


工作簿名称


< br>




8




操作工作表转载



2009-02-03 17:34:29


阅读


90


评论


0




字号:大中小



订阅


插入一个工作表:





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




Before:=Sheets(


工作表名称或工作表序号


)



举例:




Before:=Sheets(“Sheet3”)





Before:=Sheets(3)




11






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




Before:=Sheets(


工作表名称或工作表序号


)



举例:




After:=Sheets(“Sheet3”)





After:=Sheets(3)




在最后插入工作表:




After:=Sheets()






在最前插入工作表:




Before:=Sheets(1)


< br>插入


2


个空白工作表:




Count:=2




这里利用自变量


Count


来控制插入工作表的数量。




检查工作表”


Sheet2


”是否存在:




Private Sub


检查工作表是否存在


()











Dim iCount As Integer











For iCount = 1 To















If Sheets(iCount).Name =





















MsgBox


已经存在























Exit Sub















End If











Next iCount



End Sub



8.2





选取工作表




选取指定工作表:




Sheets(


工作表名称或工作表序号


).Sele ct



举例:




Sheets(“Sheet2”).Select




Sheets(2).Select



设置活动工作表:




Sheets(


工作表名称或工作表 序号


).Activate



举例:




Sheets(




12



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


(工作表名称或工作表序号)


.C opy Befor:=Sheets(


工作表名称或工作表序号


)



复制到指定工作表之后:




Sheets


(工作表名称或工作表 序号)


.Copy After:=Sheets(


工作表名称或工作表序号


)



2.


移动







移动到指定工作表之前:




Sheets


(工作表名称或工作表序号)


.M ove Befor:=Sheets(


工作表名称或工作表序号


)



移动到指定工作表之后:




Sheets


(工作表名称或工作表 序号)


.Move After:=Sheets(


工作表名称或工作表序号


)



8.5





删除工作表








删除指定工作表:


Sheets


(工作表名称或工作表序号)


.Delete



Sheets


(”

< br>Sheet2




.Delet e



Sheets



2



.Delete






根据条件删除工作表




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


gz


”的工作表




Private Sub


删除满足条件工作表












Dim I as integer



For i = . To 1 Step -1




13

















With .Sheets(i)

















If Left(.NAME, 2)=





















.Delete
















End If













End With











Next i










End Sub



8.6





工作表命名




修改指定工作表名称:


Sheets


(工作表名称或工作表序号)


.Name=

工作表名称













把工作表


Sheet2


命名为


GZSheet



Sheets

< br>(”


Sheet2




.Name=



GZSheet





Sheets



2



.Name=< /p>



GZSheet










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



SHEET2




,



sheet2


” 看成是相同的名称。




8.7


工作表的保护








1.


工作表的保护




Sheets


(工作表名称或工作表 序号)


.Protect



password:=


密码




2.


解除工作表的保护




Sheets


(工作表名称或工作表 序号)


.Unprotect



password:=


密码






9




操作单元格转载



2009-02-03 17:35:47


阅读


91


评论


0




字号:大中小



订阅




9.1









选取全部单元格





9.2









选取单元格




Range


表示单个单元格:


Range


(列标



&


行标)



举例:



选取


A1


单元格。



Range

< p>






Range(


Range(“A1” ).Select




2. Cells


Cells


表示单个单元格:

Cells(


行号,列号


)


Cells(1,1)




Cells(1,1).Select



3. Sheets


某个工作表的单元格



Sheets< /p>


(工作表名)


.Range(


单元格地址


)


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




4. Workbooks


Workbooks(


工作簿名


). Sheets


(工作表名)


.Range(

单元格地址


)




14



9.3









选取单元格区域



1.


选取连续单元格区域


< p>
选取


A1



G10


Range(


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



2.


选取不连续的单元格区域



选取


A1



B2:F 4



G2:H3


Range(



9.4









选取行



1.


选取单行



选取第五行



Range(

< p>
Rows(


Rows(5).Select



2.


选取连续多行


< br>选取第


2


行到第


8




















Range(“2:8”).Select



















Rows(“2:8”).Select















选取不连续的多行



选取第

< p>
5


行,第


8


< p>
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.


选取连续多列


< br>选取第


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


赋值



R ange


(“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



15



4.


清除单元格批注



Range(“A1”).Clearcomments




9.9









设置单元格区域格式















Selection


对象


< p>
Selection


是全局对象,每进行


Cell s



Range


Select


方法就会改变


Selection

< p>
对象



Cells(1,1).Select



Selection


对象区域就是


A1


Range(



Select


对象区域就是


A1:F10














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


Selection

< p>
设置



设置


A1:F10


的字体为黑体














Range(













=


黑体
















设置边 框


s



[


边框 类型


]




如 果设置边框的区域是


1


行,则


Bord ers(xlInsideVertical)


的设置会出错,



如果设置边框的区域是


1


列,则


Borders(xlInsideHorizontal)


的设置会 出错。



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


















yle = xlContinuous

















= xlThin

















ndex = 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]

< br>,


[LookIn]



[Loo kAt]



[SearchOrder]



[SearchDirection]


< br>[MatchCase]



[MatchByte]



[SearchFormat])


参数说明


:


(1)<


单元格区域


>


,必须指定,返回一个

< br>Range


对象。



(2)


参数


What


,必需指定。代表所要查找的 数据,可以为字符串、整数或者其它任何数据类型的数据。对应于“查找与替换”


对话框 中,


“查找内容”文本框中的内容。



(3)


参数


After


,可选。指定开 始查找的位置,即从该位置所在的单元格之后向后或之前向前开始查找


(


也就是说,开始时不查


找该位置所在的单元格,直到


F ind


方法绕回到该单元格时,才对其内容进行查找


)


。所指定的位置必须是单元格区域中的单


个单元格,如果未指定本参数, 则将从单元格区域的左上角的单元格之后开始进行查找。



(4 )


参数


LookIn


,可选。指定查找 的范围类型,可以为以下常量之一:


xlValues



xlFormulas


或者


xlCommen ts


,默认值为


xlFormulas


。对应于“查找与替换”对话框中,


“查找范围”下拉框中的选项。


(5)


参数


LookAt


,可选。可以为以下常量之一:


XlWhole


或者


xlPart


,用来指定所查找的数据是与单元格内容完 全匹配还是


部分匹配,默认值为


xlPart

< br>。对应于“查找与替换”对话框中,


“单元格匹配”复选框。


(6)


参数


SearchOrd er


,可选。用来确定如何在单元格区域中进行查找,是以行的方式

(xlByRows)


查找,还是以列的方式


(xlByC olumns)


查找,默认值为


xlByRows


。对应于“查找与替换”对话框中,


“搜索”下拉框中的选项。



(7)


参数


Search Direction


,可选。用来确定查找的方向,即是向前查找


(XlPrevious)


还是向后查找


(xlNext)< /p>


,默认的是向后查找。



(8)


参数


MatchCase


,可选。若该参数值为


True


,则在查找时区分大小写。默认值为

< br>False


。对应于“查找与替换”对话框中,


“区分大 小写”复选框。



(9)


参数


MatchByter


,可选。即是否区分全角或半角,在选择或安装了 双字节语言时使用。若该参数为


True


,则双字节字符


仅与双字节字符相匹配;若该参数为


False


,则双字节字符可匹配与其相同的单字节字符。对应于“查找与替换”对话框中,


“区 分全角


/


半角”复选框。


< p>
(10)


参数


SearchFormat


,可选,指定一个确切类型的查找格式。对应于“查找与替换”对话框中,


“格式”按钮。当设置带有


相应格式的查找时,该参数值为


T rue




(11)

< br>在每次使用


Find


方法后,参数


LookIn



LookAt



SearchOrder



MatchBy te


的设置将保存。如果下次使用本方法时,不改


变或指定这些 参数的值,那么该方法将使用保存的值。




16




V BA


中设置的这些参数将更改“查找与替换”对话框中的设置;同理,更改“查找与替换 ”对话框中的设置,也将同时


更改已保存的值。也就是说,在编写好一段代码后,若在代 码中未指定上述参数,可能在初期运行时能满足要求,但若用户


在“查找与替换”对话框 中更改了这些参数,它们将同时反映到程序代码中,当再次运行代码时,运行结果可能会产生差异


或错误。若要避免这个问题,在每次使用时应设置这些参数。




举例:



R ange(


何菲菲



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





10




VBA


程序设计转载



2009-02-03 17:39:21


阅读


158


评论


0




字号:大中小



订阅





10





VBA


程序设计






10.1


案例




设计的


VBA


程序它是存放在


EXCEL


的工作簿中。






案例:







工作簿名称:工资数据



< p>
一个人在单位中,


有一个固定的编号,


这个编号不 随部门的换而变化。人员在部门的变动可以通过序号完成。


序号起两个作


用,第一位是部门号,第二和第三位是顺序号。通过这个顺序号,就能够达到划分部门和人员在部门内的 排序。






10.2


过程程序




1.


创建过程





Sub


过程是一系列由



Sub




End


Sub


语句所包含起来的



Visual


Basic


语句,它们会执行动作却不能返回一个值。


Sub

< p>


程可有参数,例如常数、变量、或是表达式等来调用它。如果一个



Sub


过程没有参数,则它的



Sub


语句必须包含一个空


的圆括号。




创建一个过程需要两个基本步骤。


首 先,


需要向工作簿中添加一个模块。接着需要向模块中添加一个工程。

< br>对于创建的每一


个应用程序,只需添加一次模块。可以使用多个模块,但这是不必 要的。某些开发者喜欢使用多个模块,以便根据他们的目


的或者窗体对过程进行组织。< /p>




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





1


)打开 一个新工作簿。







2


)选择



工具





编辑器



,打开


VBA


编辑器窗口。





3


)在< /p>


`VBA


编辑器的左面,可以看到“工程资源管理器”窗口。在工 程资源管理器窗口的“


Thisworkbook


上单击鼠标右


键,选择“插入”


-


“模块”


,这样就将一个模块添加到应用程序中了。


(


如 果你没有看见“工程资源管理器”窗口,可以按


Ctrl+R)






4< /p>


)选择“插入”


“过程”


,显示“添加过 程”对话框。




< br>5


)输入“第一个程序”作为过程名字。在“类型”分组框中,确认选择了“子程 序”


。单击“确定”按钮。这样一个新的


过程就添加到模块中了 。可以在模块中看到以



Public Sub


第一个过程()开始,以


End Sub


结束的语句结构。




VBA


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










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










名字中不能包含空格句号惊叹号,也不能包含字符


@ & $$ #.









名字最 多可以包含


255


个字符。





6


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





17



在 输入


Msgbox


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




Public Sub


第一个程序


()





MsgBox


程序




End Sub






Msgbox


的进一步说明:




语法:


MsgBox



prompt[, buttons] [, title] [, helpfile, context]











MsgBox


函数的语法中,


括号内 的参数是此函数的命名参数。


方括号所包含的参数是选择性的。




MsgBox


函数中,


唯一必须提供的参数(


prompt


)是做为提 示的文本。








在代码 中可以利用位置或名称来指定函数与方法的参数。


若利用位置来指定参数,


则必须根据语法中的顺序,


利用逗号


来分隔每一个参 数,例如:








MsgBox


回答正确


!

< p>
提示








若以名 称来指定参数,则须使用参数名称或跟着冒号与等号(


:=


)< /p>


,最后再加上参数值。可以任何的顺序来指定命名参


数,例如:< /p>








MsgBox Title:=< /p>


提示



回答正确


< /p>







函数以及某些方法的语法会利用圆括号将参数封闭起来。


这些函数和方法会返回值,


所以必须用圆括号将参数封闭起来,


才可以赋值给变量。


如果忽略返回值或是没有传递所有的参数,


则可以不用圆括号。


方法若不返回值,则不用将参数用圆括


号封闭起来。




2.


运行过程




创建过程后,可以通过几种方式运行。可以直接使用“运行” 菜单,


“运行子程序


/


用户窗体”工具 栏按钮或按下


F5


键。





F5


后, 选择要运行的过程:




运行结果:







3.


保存对模块所做的改变







要保存新过程


,


需要保存过程所驻留的工作 簿。可以用


VBA


编辑器保存工作簿。具体步骤如下

< p>
:




选择

< p>


文件



保存



。则工作簿和模块与过程都保存下来了。




10.3


变量的应用




1.



Dim


语句声明变量







声明变量可以使用


Dim

< p>
语句


,


基本语法如下


:






Dim


变量名



AS


数据类型







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






变量名必须以字母开始


,


并且只能包含字母数字 和特定的特殊字符


,


不能包含空格、


句 号惊叹号


,


也不能包含字符


@ & $$ #



名字最大长度为


255

< p>
个字符







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


:







1


)创建一个名为



显示信息



的子程序。






2


)输入以下代码


:




18





Public Sub


显示信息


()









Dim M_msg As String









M_msg = InputBox(


请输入信息


:









MsgBox


你输入的信息是:




End Sub




3)


按下


F5


键运行过程。< /p>




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

< br>语句来声明。


标量变量


(非数组)


与数组变量的不同在于通常必须指定数组的大小。


若数组的大小被指定的话,


则它是个固定大小数组。


若程序运行时数组的


大 小可以被改变,则它是个动态数组。








数组是否从



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)


声明动态数组




19








若声明为动态数组,则可以在执行代码时改变数组大小。可以利用



Static



Dim



Private




Public


语句来声明数组,


并使 括号内为空,如下示例所示。








Dim M_Array


()



As Single






可以在过程中使用



ReDim


语句来做隐含性的数组声明。








对于过程中的数组范围,可以使用



ReDim


语句去改变它的维数。然而当执行这个命令时,数 组中存在的值会丢失。若


要保存数组中原先的值,


则可以使用< /p>



ReDim Preserve


语句 来扩充数组。


例如,


下列的语句将



XArray


数组扩充了


5


个元素,


而原本数组中的当前值并没有消失掉。








ReDim Preserve XArray



UBound



XArr ay




+ 5





10.4


控件的应用




1.


向工作表添加控件








EXCEL


设计界面时

< br>,


要将控件添加到工作表上


,


可 以按以下步骤操作


:



< p>
1)


选择工具下的“自定义”


,

< br>显示



窗体



工具栏。







2


)选择



标签



控件。< /p>







3


)将鼠标定位到某单元格


,


此时鼠标变成小十字。







4


)按下左键


,


拖动鼠标,确定控件的大小< /p>


,


放开鼠标左键。







5


)在“标签


1


” 上单击右键


,


选择


编辑文字



现在可以输入文字。完成后


,


单击任何单元格退出文字编辑。







6


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






2.


设置控件的特性







每个控件都有一系列的特性,需要进行设置来满足不同的需要。设置控件的特性


,


可以在该控件上按右键完成。






3.


给控件命名







当创建一个控件时,


EXCEL


会自动给它 指定一个默认的名字


,


但不便于理解和记忆。

< br>更改控件的名字,


先选中某个控件


,

再在位于公式栏上的



名字



编辑框输入控件名字。这样就给控件更改了名字。






4.


使用用户窗体







要创建功能复杂的应用程序


,


并且方便用户 输入数据


,


那么应该使用用户窗体。用户窗体可以作为程序的对 话框和窗口。


向用户窗体添加控件基本类似于向工作表添加控件


,


然而第一步要创建一个用户窗体。


这可以通过


VBA


编辑器实现。


具体按


以 下步骤操作


:






1


)打开 工作簿


,


选择



工具





编辑器



打开


VBA


编 辑器。







2


)在


VB A


编辑器中选择工具栏上的



插入用户窗 体



按钮或者选择



插入



菜单


,


从下拉菜单中选择



用户窗体


< p>






VBA


编辑器中出现一个名为



的窗体


,


控件工具箱



同时出现


,


在其中有部分新的 控件。






这些新的控件是


:





①切换按钮


:


该控件如果被选中


,


那么会保持被 按下的状态。


如果再次单击它就恢复为没有按下的状态。


EXC EL


工具栏中


有几个这样的按钮


,


例如


:


全屏显示


< /p>


加粗



下划线



以及



窗体



工具栏中的



切换网格


< /p>


等。






②选项卡条


(TabStrip):


它是包含多个选项卡的控件。通常用来对相关的信息进行组织或分类。例如


:


用选项卡条来显示各


个地区的销售信息

< p>
,


可以给每个地区设置一个选项卡。在默认时


,< /p>


选项卡包含两页


,


分别叫做


TAB1



TAB2,


可以 添加更多的选


项卡。





20





③多页


:


外 观类似选项卡条


,


是包含一页或多页的控件。

< br>选项卡条给人相似的外观


,


而多页控件的各页包含各自不 同的控件


,


有各自不同的布局。多页的例子很多


,


例如


:


设置控件格式



对话框和



工具



菜单中的



选项



对话框。以及



格式< /p>



菜单中的




元格


...


对话框。






④ 图像控件


:


它允许向窗体上放置图片。图片格式须为

< p>


:*.bmp



*.c ur



*.gif


< br>*.ico



*.jpg,*.wmf

< br>。







RefEdit:


它外观象文本框,通过这个控件可以将用户窗体折叠起来,以便选择单元格区域。




在用户窗体设计过程


中可以对其 进行预览,方法是在


VBA


编辑器中选择该窗体,单击“运行” 菜单中的三角符号“运行子过程


/


用户窗体”

< br>,运


行窗体的另一种方法是按


F5






10.5 EXCEL VBA


代码结构








1.


对象、属性和方法





1


)面向 对象概述




①面向对象方法的产生



< p>
在面向对象的方法之前,程序设计所采用的是面向过程的方法。面向过程的程序设计的一般思路是: 自顶向下,逐步求精;


把程序结构按功能分成若干个基本的模块,


这些模块之间尽量相对独立,


功能尽可能单一,每一个模块都是由顺序、


选择和


循环三种结构组成,模块化的方法的具体实现是使用子程序。




由于这种结构化的程序设计的方法使用了模 块分解的方法,


有效地把一个复杂的程序抽象成一些简单的易于控制和处理的子


程序,使设计便于管理和维护。



< p>
由于用户图形界面的广泛使用,


软件的规模也越来越大,要求也越来越高, 使软件的开发越来越困难。


为了适应软件开发的


发展,在


80


年代中期提出了面向对象的概念。面向对象的方法的中心思想是: 像真实的世界由真实的物体组成一样,软件


的程序设计也可看成由一系列单独的对象组成 ,


每一个对象都有自已的特定的特征和行为。


软件开发从本质上 讲,


就是对软


件所要处理的问题做出正确的认识,并把这种认识 表述出来。




所谓面向对象的方法, 就是将数据和对数据的操作放在一起,组成一个相互依存、不可分开的整体——对象。




面向对象的程序设计方法之所以能受到如此广泛的欢迎,


其中的一个很重要的原因就是可以使软件设计者通过可执行代码的


共 享使程序创建更容易。不用为每一个方法保留一个单独的拷贝,相同的


VBA

< p>
对象类型能够共享它们的方法的代码。




②对象




一 个对象可以是一个真实存在的物体,


也可以是一个抽象的事件,但不管它是真实物体也好 ,抽象事件也好,


它总是可以用


静态特征和动态特征来描述。< /p>


所谓静态特征,


就是物体的颜色、


大小等 可以用某种具体的数据来描述的特征;


所谓动态特征,


就是物体 所能表现出来的行为和所具有的功能等特征。




与真实物体类似,


在程序设计中所用到的对象的概念,


也可以由静态特征和动态特征来表现。


在这里静态特征称为属性,


态特征称为方法。这些属性和方法在一起就定义了一个对象。对象是系统中用来描 述事物的一个基本单位。




面向对象 的程序设计方法将数据和程序封装到封闭的对象中,


这样就使设计、

组织和使用这些复杂的数据结构和由那些数据


所完成的功能变得很简单。

< p>
软件应用程序中的每一个对象都包含了程序代码和数据,


并合成了一个简单 的项。


大部分应用程


序中都包含了很多种不同类型的对象。




VBA


中提供 了访问其它应用程序和其它应用程序中的对象的方法。


要使


VB A


获得对主应用程序的过程的控制,


就要用

VBA


代码操纵主应用程序中的对象。使用类模块,甚至可以创建自已的对象。




例如,在


Ex cel


中,工作簿、工作表、数据区域、图表、图形、工具栏、菜单等都是对象。通过对 这些对象的使用就可以实


现对


Excel


的操作。




③属性




属 性就是对象的静态特征。例如,一个人,要描述他,总是通过如高矮、胖瘦、美丑等一系列特征来进行。所有这些 特征就


可以认为是对象的属性。



< /p>


属性决定了一个对象的外观和行为,


要改变一个对象的外观和行为 ,


可以直接通过改变对象的属性来实现。


要改变一个

< p>
Excel


对象的外观和行为,


可以通过对属性的 赋值来实现。我们要想让工作表变得好看一些,


就可以改变它的颜色属性,


要想让字


体变大一些,就可以改变它的


Font


属性。




21




通过属性不仅能改变对象的行为, 还能查看对象当前的状态。例如要想知道工作表的名称,可以直接访问它的


Name


属性,


要想知道工作簿的存储路径、文件夹和名称,则可以访问它的


FullName


属性。




对象都有属性,用来描述或设置对象的特征。可以使用


VBA


来设置对象的属性,也可以对一个对象的某些属性进行修改,< /p>


从而定义该对象,还可以引用某对象的属性值。使用属性时,应将对象和属性组合在一起, 中间用句点分隔。








语法:


<


对象


>.<


属性


>



<


参数


>







说明:


设置或引用某对象的属性。


若该属性 带有参数或需要为带参数的属性指定参数时,


则指定参数以进一步描述该对


象;若该参数返回值,则应在参数两边加上括号。








语法:


<


变量


>= <


对象


>.<


属性

>







说明:将某对象的属性值赋值给一 个变量,以便于在程序中使用。




例 如,


Range


对象有一个


Value


属性,可以用


VBA


代码引用该对象的 属性值,也可以修改该属性




④方法




现 实的物体几乎都有一些内在的行为和功能。例如,人可以从事工作、消费,汽车可以用来运输,房子可以用来住, 等等。


方法可以改变对象的属性值,方法也可以对储存在对象中的数据实施某些操作。方 法很象


VBA


编程中的过程,但它属于某


个对象,必须通过特定的对象才能访问方法。



< p>
虽然相同类型的对象能够共享它们的方法代码,但是当用户访问某个特定的对象时,该方法只能作用 于调用该方法的对象。




对象都有方 法,


一个方法就是在对象上执行的某个动作。


为对象指定方法时 ,


应将对象和方法组合在一起,


中间用句点分隔。








语法:


<


对象


>.<


方法


>



<


参数


>







说明:


为某对象指定方法。


若该方法带有参 数或需要为带参数的方法指定参数时,


则指定参数以执行进一步的动作;



该参数返回值,则应在参数两边加上括号。




⑤类



< /p>


面向对象方法中的类,


是具有相同的属性和方法的一组对象的集合 。


它为属于该类的全部对象提供了抽象的描述,


其内部包


括属性和方法两个主要部分。类与对象的关系犹如模具与铸件的关系一样。一个属于某个类的对 象称为该类的一个实例。




实际上整 个


VBA


的对象体现是一个分层结构。对象分层结构的概念意味 着对象可以包含其它对象,而其它对象又可以包含


别的对象。这种“包含”是通过一种名 叫“集合”的特殊类型的对象来实现的。集合对象的唯一目的是用来包含其它对象。


被给 定集合所包含的对象都是同一类型的。




2


)对象的引用




既然已经有了对象的定义,


我们就可 以使用这些已有的对象来完成一些实际的任务。


但是,


在使用对 象之前,必须要作的事


情是:要让


Excel

< br>知道现在用的是一个对象,而且需要明确这个对象是属于哪一个类,这个对象具体值是什么。




使用对象首先要定义:这是一个属于某个类的对 象,然后再给它赋一个具体的值。




给对象变量赋值的语句和给普通变量赋值的语句不同。


给普通变量赋值的语句只要直接用 一个等号就可以了,


而给一个对象


变量赋值则需要用到


Set


关键字。



< /p>


Excel


的对象模型是通过层次结构很有逻辑地组织在一起的, 一个对象可以是其它对象的容器,可以包含其它的对象,而这


些对象又包含其它的对象。 位于顶层的是


Application


对象,也就是

< p>
Excel


应用程序本身,它包含


Excel


中的其它的对象,如


Workbook


对象 ;一个


Workbook


对象包含其它一些对象,如

< p>
Worksheet


对象;而一个


Workshe et


对象又可以包含其它对象,



Ra nge


对象,等等。这就是


Excel


的对象模型。




例如,


Range


对象在


Excel


对象模型中的位置为:




Application


对象












Workbook


对象




22

-


-


-


-


-


-


-


-



本文更新与2021-02-02 07:12,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/597935.html

EXCEL_VBA是什么意思的相关文章