




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、3VBA初步193. VBA初步3.1. VBA 简介VBA Si Visual Basic for Applicauon的缩写,是一种应用程序自动化语汛 所谓应用程 序口动化,是指通过程序或者脚本让应用程序,例如Microsoft Excel、Woid自动化完成一 些工作,例如在Excel里门动设置单元格的格式、给的元格充填某些内容、fl动计算等。 在前面的章节里,我们通过使用宏来设Excel单元恪的格式、填充单-元格的内容,而使 宏完成这些工作的正是VBAoMX VBA的由来在20世纪90年代早期,使应用程序门动化还是充满挑战性的领域。对毎个需耍动化的应用程序,人们不得不学习-种不同的动化
2、语言.例如.可以使用Excel的宏语訐使Excel门动化使用Word Basic使Microsoftord门动化等等。I人1此.Microsoftt决定开发 谢应用程序共享的通用自动化语言VBA,这就足Visual Basic forApplication (VBA)的山來 Visual Base for Application可以看做是任常流行的应用程 序开发语盲Visual Basic的一个子策.Visual Basic Jt他子集还包括VB Scnpt等VBA JWj VB语吉的人女数特征和易用性,它址人特点就是将Excel作为开发平台來 开发应用程序,可以应;0 Excel的所仃己仃功
3、能,例如数据处理、图表绘制、数据咋连按、 内置函数等等。本部分将対VBA及其开发环境IDE (集成开发环境)、VEA的荃本语法、应用VBA 自动化Excel做一简单介绍。文中会涉及到一些诸如对象、專件等部分读者可能不熟悉或 不涓处的概念,对:此类问题町自接忽略Z,因为在后面会何详细介绍。本部分也不是一 个VBA的参考文档,只是其语法、特征的快速浏览和介绍。学习完本部分的内容后读者用该町以应用Excel和VBA进行一些简单的开发。3.2. VBA快速入门3.2.1. VBA开发环境VEA 集成开发环境(IDE, Integrated Dex-elopment Environment3缩写)是进行
4、 VBA 程序设计和代码编写的地方,同版本的Office共享同一 IDE。VBA代码和Excel文件是 保存在起的,可以通过点击“工具一宏一 Visual Basic编辑器”打开VBA的IDE 环境(图3人进行程序设计和代码编写。打开VBA IDE的方法: 通过“工具一宏一 VISUAL BASIC编辑器” 通过快捷键“ALT + F1 右键单击匸具巴选抒Visual Base0,此匸具栏仃录制宏,打开VBAIDE等的 快捷按钮:決吆:丁洋南窃 ?RIP 荷入Q) 裕式Q)说hXQ) 示行 TA Qi籽序色口即爭訥ZJ 5)Option ExplicitX匕fKfevgvg亠.一 i 9%rr
5、讣S 3yI “ 丄应丨&声丹 丨3 列丄4 9 O*ChQBi strykrt (丹恥 2、?jjgfl Steell (Shll)B SEetZ CShet2)曰 & ffiftF? VscrFrnrJ輿SUM 6” 轩 rhmrkbxkTibi sforklioe VcirHioek拎字奇不11?刃專傍 flkizYorkfal; iXcccftLcbcl si FalseXctolpdateFreOChftrAHi ztcryCCXLtl:ctKa:011 xLVsorKc f alse 矽“wTj 4IC4 x!3iDi zpl ajdalcJ rlrttE.4bleActoLccl
6、rueU opi?Vis)lFdseHnstaats Constants Conversi on DateTine ErrObject FileSystem Finance al FormShjwC ons t ant s GlobalInformation Interaction KeyC q deC uxia talite MathStrin&s Syst emColorConsttnts VbAppWtnSf yie VbCalendar VbCallTypeVbCQlp xr cMc *.1xqd VbDateTim eFormat VbDayOfWeek VbFilelttri bu
7、t eAbs3 Appctivite3 Asc3 AscB 子0 Ascff G AtnBeeppj? Calendar CallByNane wQ CBool4 CByteCCurCD ateO CDbl0 CDec卡 CKDir3 ChDrive Choose3 Chr3 Chr$3 ChrB3 ChrB$ 金 Chr# q Chrf$/ VbFirstWeekOfYearFunction AbsfJo讪ar VBABath的成员图3-4 VBA IDE环境的对象浏览器上部可以选择对象.也可以输入一些查询条件;左侧为对象列表;右侧是对彖的成员,包括属性、方法和事件;下部为成员或者对象的说明
8、3.2.2.在VBA IDE下进行开发熟悉了 VBA的IDE坏境后,我们*丿|:发VBA Z旅的第个程序。新建个Excel文 件,通过菜单或键盘快捷键打开VBA集成开发环境,在VB.AProject卜.单击右键,选择“插 入一模块”。这样,系统将打开一个代码窗口,在窗口中输入以下代码X#001 Sub MyFirstVBAProgram()#002Dim strName As String#003Dim strHello As String#004strName InputBox(11 请输入你的名字:”)#005 strHello =-你女人 n & strName & n!H#006Msg
9、Box strHello#007 End Sub将鼠标光标放置在这段代码Z内,单击菜单“运行一运行子过程/用户窗体”,或者代码内的“#003”为行号在实际代码中不能输入.在此只为文中叙述方便.之后不再重如 在丁n栏单击运行按钮,则可运行这段代码。运行结果会显示一个对话框,输入一些内容 后,会显示相应的问候语。同样,这段代码可以和宏一样,在Excel卜选择并执行。O 与其他程序设计诳育不同,VBA程序足*件驱动的.没冇Mam函数之类的入口的概 念。如果在【DE环境下,鼠标光标不在任何过程内.单击工具栏或运行菜单的运行, 会显示一个对话框,婆你选择婆运行的过程.木质上,VBA代码应该只是一叫完成J
10、I体丁作的集介.而通过界而元素或不Excel的 书件驱动执行,你町以通过H定义按钮、菜单,并指定一个宏(VBA过程,白定义界 面也可以通过编程F段完成此类匸作),通过单击此按钮即可调用相应的VBA代码, 或者将调用绑宦在Excel的菜个啡件下。卜面我们简单看一下上面这段代码的组成,代码第1行表示这是一个新的过程,名称 为“MyFirstVB.AProgramn,第2、3行定义了 2个变駅,其类型为字符串类型,第4行调 用InputBox这个内置函数,并将返冋值赋给suNimc这个变起,第5行将儿个字符串组介 成一个新的字符串,第6行调用MsgBox这个隨数,显示一个对话框,第7行表示过程结 束
11、。VBA程序由不同的模块组成,在模块内部,可以定义不同的变昴、过程或函数,由此 组成一个完整的程序。O代码窗口的设置中文坏境F VBAIDE代码谢口缺省的设耗比较糟糕,字体为宋体,大小是9磅,使用不很方便,可以在“工具一选项”对话框下的“编紺器格式”页内设置代码窗口7 体、颜色、许疑。了体建议使用Courier New.大小可以按照门己的分辨率设芒标准以 阅读淸楚为宜.在此模块内,再新建-段代码:#001 Function MyAdd(varAr varB) As Variant#002 MyAdd = varA + varB#003 End Function此段代码非常简单,只有3行,第1行
12、表示这是一个旳数,其有2个参数varA,和varB, 函数与过程的差别在丁函数仃返回值,第2彳亍将参数vaiA,和varE的和赋给函数,代表其 返冋值。两数无法直接运行,必须从作表或者其他程序调用,例如,我们可以写以卜一 段简单的程仔调用此函数;#001 Sub TestAdd()#002Dim a 9 b, c#003Ql =12#004b =34#005c =MyAdd(a z b)#006MsgBox c#007End Sub其中第5行为函数MyAdd的调用,函数将返回值赋给c。需耍说明的是,VBA中,调用过程可以使用Call语句,也可省略,调用过程时,其参数的括号可以省略,但调用函数必
13、须仃括号。也可以直接在工作表内使用自定义的函数,例如在工作表中.我们可以和Excel内置 函数一样使用自定义的函数(图3-5), Excel会负亦势数传递,将返回值赋给相应的单元 格,在引用参数改变时会自动页新计算总之,与内置函数的使用没冇什么不同。Cl住二MyAdd(Al, Bl)ABC 1D1100023匚102311|2图3-5在工作表中使用自定义函数以上通过2个例子简单介绍了 VBA编程的过程和概念,后而我们将正式进入VBA 编程Z旅,逐步讲解模块、函数与过程、数据类型、基本语法等概念。VBA程序的保存当关闭VRATDR的时候.不会捉示保存用P所做的修改.当我们辿出Rxcd保存其文 件
14、时,VBA程序代码也随Z保“,因为VBA代码是寄生丁 Excel或坨他文档的,保 存文档即保存了 VBA代码.対丁一般的VBA程序,这点没仃什么何題,但如果是在进彳j加找加的开发,那么退 I1HDE环境时,一定耍点击英文件菜眼或匸具栏的保存,保存所做修改,否则会丢失 所做的任何修改.3.2.3.模块、过程和函数VEA代码必须存放在某个位置,这个地方就是模块。模块是作为一个单元保存在一起 的VEA泄义和过程的集介。VBA中仃两种基本类型的模块:标准模块和类模块。模块町 以包括2类子程序:过程或者函数。3VBA初步29般來说,简单的VBA程序设计,人部分T作集中在标准模块中(后而简称为模块)。 当
15、Excel在录制宏时如果不存在模块,EXCEL自动仓I建一个。EXCEL和VEA不关心代码 存放在哪一个模块屮,只要代码存在J;打开的工作簿屮即可。可以在工程资源管理器上单 击右键来増加删除模块(图3-2),选中模块后可以在属性窗匚I修改其名称(图33) 过程彼定义为VBA代码的一个单元,过程中包括一系列用执行某个任务或是进行 某种计算的VBA语句。一个工作簿的每个过程都冇唯-的名字加以区分。过程只执行一 个或多个操作,而不返冋数值。肖录制完宏査看代码时,所看到的就是过程。卜面就是一 个简单的修改选屮文字的字体的过程。Sub ChangeFont()With SelectionFont.Nam
16、e-MArialnFontStyle=nRegularnSize=16End WithEnd sub将这个过程输入到VEA中的某个过程,返回Excel,在某个单尤格输入文字,选屮他, 然后选择“工具一宏一宏”,在宏对话框中选择“ChangeFont然后执行他,我们会 看到选中的单元格文字格式被更改为AnH”,16点大小。函数过程通常情况卜称为函数,是会返回一个值的过程。函数和过程的差别是具定义 方式不同,换数使用VBA的关键字Function定义,而过程使用关键字Sub定义。两数返 冋的值称为返I叫值,这个数值通常是计算的结果或是测试的结果。我们町以用VBA创建 1怎义函数,并且在工作表上使用
17、所创建的函数。以卜程序是一个计算价格的10%为运费 的简单例子。Public Function Shipping(Price)Shipping = Price * 0.1End Function这个函数使用一个参数(Price),过程和函数都可以使用参数。不论Pnce的值是多少, 它都将决定运费额。函数计算运费,计算结果在函数屮通过赋给两数名“Shippmg”来返 回给调用者。Price可以是数字和单元格引用。这个函数可以被其他过程或者函数调用,也 可以使用在电子表格中。例如图35和图36所示。SUH * 7 & = Shipping(B2)ABC122453运费二 Shipping (B2)
18、二图3-6在工作表中使用函数Shipping3-2.4-创建过程和函数创建第一个过程需耍两个基本步骤。苗先,需耍向工作簿中添加个模块。接着需耍 向模块中添加不同的过程和旳数。对r一个应用程序,可以使用一个模块,也可以使用多 个模块。如果你的程序比较复朵,使用多个模块可以更好的组织代码。卜而我们从头开始创建一个只显示一个消息框的过程,來学习过程的创建,请按照以 卜步骤进行:(1)打开一个新工作簿,进入Visual Basic编辑器,也UP VBA IDE:(2)在VBA IDE的左面的“工程资源管理器”窗I I VBA T程上单击鼠标右键,选择“插入一模块”,这样就将一个模块添加到应用程序中了:
19、(3)从菜单选择“插入一过程冷显示“添加过程”对话框:图3-7添加过程对话框(4)输入“HelloMsg”作为过程名字,在“类型”分组框中,确认选择了 “子程序”, 单击“确定”按钮继续;这样一个新的过程就添加到模块中了,町以在模块中看到以卜代 码:Public Sub HelloMsgC)End Sub(5) 在过程屮输入以卜语句:MsgBox ”这是我的第一个过程”在输入MsgEox后,会口动弹出一个灯关这条命令的信息,称Z为即时代码提爪或口 动列表技术。输入后的过程如卜所示:Publie Sub HelloMsg()MsgBox ”这是我的第一个过程”End Sub创建这个过程后,可以运
20、行一 K运行一个过程仃儿种方法:将做标光标放置在这段 代码之内,单击菜单“运行一运行子过程/用户窗体”,或者在工具栏单击运行按钮,则 可运行这段代码。运彳亍后,此过程执行并显示i个消息框;单击消息框Z中的“确定”按钮,关闭该消 息框,程序运行结束。图3-8过程运行结果婆保新过程.需婆保过程所在的匚作薄。町以在VBAIDE环境卜谜择“文件一保 存工作簿”保存,也可以在Excel环境下保存。VEA対子程序和苗数仃如卜的命名规则: 名字中可以包含字母数字和卜划线: 名字中不能包倉空格句号惊叹号,也不能包金字符&$样; 名字垠多可以包含255个字符。在过程或者函数小,可以调用典他的过程或者函数,例如:
21、#001Function Add(a9 b)#002八计算a和b的加法和#003Add = a + b#004End Function#005#006Sub Display()Excel与VBA程序设计Copyright Q2005 马维0年3VBA初步33#007Dim sum#008sum = Add(2/5)#009MsgBox sum#010 End Sub函数Add计算2个数值的值,并返回他,过程Display定义了 sum这个变晟,调用了Add函数计算(8行),最后调用MsgBox命令显示结果(9 if).在第二行,我们看到冇一句“计算a和b的加法和”的说明,称为注释,是对程序进行
22、说明的语句,在执行过程中 并不执行。注释可以更好的帮助我们阅读、修改代码,对一段半个月前写的代码,你重 新打开需耍修改,经常会忘了程序的功能和流程,这时候,就需耍注释帮助我们。VBA中, 注释的格式是在一旬话Z前使用单引号來表示注释,注释町以位程序的任意地方。3.2.5.变量变磺是用J:保存数据的地方,毎个变吊邯石耍便用一个名字來农示,称为变彊名。在 程序设计中,我们把需要使用的数据,例如数值、字符串、Excel的对象保存在变量中. 每次应用程序运行时,变炭可能包含不同的数值,而在榨序运行时,变鼠的数值可以改变。 我们回到前边学习过的-段代码,來说明为什么耍使用变磧。#001 Sub MyFi
23、rstVBAProgram()#002Dim strName As String#003Dim strHello As String#004strName InputBox(11 请输入你的名字:”)#005 strHello = M尔女人 n & strName & n ! H#006MsgBox strHello#007 End Sub这段代码通过InputBox这个命令显示一个对话框,输入内容后,通过MsgBox显示相 应的问候语。那么JI?的strName和strHello就定变吊,如果没仃strName,那么在InputBox 中输入的名字就会丢失,因此需耍创建一个变杲,以保存程序运
24、行过程中的一些中间结果。上面的例子里,定义变量后面的“As String”定义了变量的数据类型。和Excel单元 格里的数据-样,VEA里的变幘也盂要冇数据类熨。表3列出了 VBA支持的部分常用 数据类型以及各种类型的变戟能够心储的数值范由。表3-1 VBA支持的部分数据类型数据类型范围Byte0 到 255BooleanTrue 或 FalseInteger-32, 768 到 32, 767Lmg (长整型)-2,147, 483, 648 到 2,147, 183, 647Single (单精度浮点型)负数时从-3.402823E38到-1. 401298E-45:正数时从1. 4012
25、98E-45 到 3. 402823E38Double(双粘度浮点型)负数时从-1. 79769313486231E308 到-4. 94065645841247E-324:正数时从4.94065645841247E-324 到 1. 79769313486232E308Date100年1月1 H到9999年12月31日String (变长)0到大约20亿Variant(数字)任何数字值,最大可达Double的范刖Variant (字符)与变长String有相同的范串1以上数据类型是VBA支持的部分数据类型(不是全部),其中Byte. Integer. Long 都用来表示不同人小的帑数:Bo
26、olean表示判断,即对(True)还是错(False): Single Si Double农示不同人小范H;l的实数;Date用來农示口地和时间;Stiing用來表示一个在发出; Xnant是-个特殊的数据类熨,可以表示任意类型的数据,对没冇定义数据类熨的变帚, 默认为anant类型。在程序设计中.我们应该根据需耍选择合适的数据类熨。以卜我们将创建变確。创建变It可以使用Dim语句,创建变值通也称为“声明变量Dm语句的某本语法如卜:Dim变量名AS数据类型这条语法中的变帚名代表将耍创建的变廣名。变杲名必须以字母开始.并H只能包含 字母数字和特泄的特殊字符,不能包含空格、句号.惊叹号,也不能包
27、含这些字符:&$ 机 名字最人长度为255个字符。这条语句中的数据类世部分可以是表3-1中的任何一种 数据类型。例如在上而的程序里,我们创建了 2个Suing类型的变瓦 用來存储我们输入的名了:Dim strName As StringDim strHello As String语句“strHello = ”你好,“& strName&T”中,“&”表示连接2个字符串,我们也可以使川“+來连接2个字符串,但推荐使川以避免和-般的加法运算混淆。 我们再看一个例子:Sub Add2Number()Dim i As IntegerDim j As IntegerDim sum As Integeri
28、 InputBox( ni: n )j = InputBox( M请输入 j: n )sum = i + jMsgBox Mi+j=n & sumEnd Sub这个例子里我们定义了 3个Integer类型的变彊,使用InputBox给1和j赋值,然后通过计算得到结果sum,最后使用MsgBox输出结果。VEA的整型变彊(Byte, Integer, Long)和浮点类型变吊:(Single和Double) 口J以进彳j加、减、乘、除、乘方等数学运算,使用的算术运算符分别为:1. A运算符:求一个数字的某次方,如AE;2. *运算符:乘法运算:3. /运算符:除法运算;4. 运算符:对两个数作除
29、法并返冋一个整数;5. Mod运算符:求两数的余数:6. +运算符:加法运算:7. 运算符:减法运算。例如:k =i +Jk =i *jj = 2 +i八3VBA的算术运算符的优先级和数学屮一样,例如“2 + 3”会先计算的3次方,然 后再进行加法。前面说过,如果在Dun语句中不提供数据类型,变杲将被定义为Xnant类熨,这时, 这个变帚可以根据程用的上卜文存储任意的数据类型。因为VBA屮默认的数据类型是 Vananto使用Xnanr类熨的优势是简单,这也正是VBA容易学习的原因之一。我们在后 面的学习屮会再返冋到这个话题,一般來说,我们在模块、过程和负数内定义变吊的时候, 都应该指定其数据类
30、型;但如果渎者対变彊类型感到迷感,那么可以使用如卜方式來定义 变鼠,而不指定数据类型:Dim Var対两数的参数和返回值,可以使用以卜方法来指定参数,例如:Function Add(a As Double9 b As Double) As DoubleAdd = a + bEnd Function这个换数第一行的a后面的“As Double”,指定a的数据类型为浮点型,b后面的类似, 最后的“As Double”指定了函数返回值的数据类型。326.程序流程VEA程序是由语句组成的,语句的定义为可衣达一种动作、声明或泄义的程序单元。 一般來说,每个语旬应该占一行,表示要进行的操作,例如进行计算、
31、输入输出等等。程序设计语言的语句的组织形式可以划分为3种:顺序语句、条件语句和循环语句。 顺序语句、条件语创和循环语句可以互相组介嵌套,从而完成复杂的程序。(1) 顺序语句,即按照语句的顺序来执行的,例如卜面的例子:Sub Sequence()Dim i. jDim sumi = 1j - 3sum = i + jMsgBox sumEnd Sub程序首先对l和J赋值,然后计算其结杲,最后使用MsgBox显示结果。程序执行的过程是按照语句的顺序來进彳j的。(2) 条件语句,即根据菜种条件判断來决定执行的顺序.而不是顺序执行.我们留在后面详细介绍。(3) 循环语句,即根据某些条件,对某条或某段语
32、旬循环反复执行数词,称为循环语句.例如有时候需耍对某些值进行求和,如果这些数值有成千匕力条,那么就需耍通过循 环诅句來累加。我们后面会详细介绍。3.2.7.条件语句我们先看一个例子:#001 If T = 2 And T 3 ThenExcel与VBA程序设计Copyright Q2005 马维0年3. VBA初步37#004Target =300#005Else#006Target =500#007End If这是个完整的IF逻辑判断式,意思是说,假如If后的判断条件成立的话,就执行第2行语句,否則假如Elself后的判断条件成立的话,就执行第4行语句,Else的意思是说, 假如以上条件都不
33、成工的话,就执行第6行语句。条件判断是在程序设讣中经常会碰到的,例如根据用八的输入來选择不同的操作,或 昔根据某段程序计算结果的不同而采取不同的操作。一般來说,判断语句是类似这样的形 式:如果一件事情成立,那么我们应该这样做,否则我们那样做。例如,如果卜*19了,那 么出门就要带把伞,否则就不用带。实际生活中的如來、那么转换为VBA程序设计语言 就是If、Then. Elself. Else这些关键词。卜而我们通过例子來说明判断语句的使用方迄例如卜面整个例子:#001 Sub IfTest()#002If Application.ActiveCell= 23 Then#003MsgBox袖单元
34、格是23n#004Else#005MsgBox 11单元格不是23”#006End If#007 End Sub这段代码判断当前活动单尤格的值是不是23,然后弹出一个对话框來反馈结果。第2 彳亍的Applicauon.ActiveCell是Excel对彖,农示当前活动单尤格,我们H -节将会介绍相 关的内容。这句话判断这个值是否23,最后的Then是VBA关键字,Z后的语句在上面的 判断成立的情况卜执彳J:;如果判断结果为假,则执VElse ZJd的语句。垠后耍以End If來 结束判断语句.这样,我们对以看到判断语句的标准形式是以卜形式:#001 If 条件 1 Then#002 #003
35、Elself 条件 2 Then#004#005 Else#006 #007 End If在进行条件判断时需要使用比较运算符來进行判断,常用的比较运算符有:=,判断左右两边的值是否是否相等: ,判断左侧的值是否人右侧的值; =,判断左侧的值是否大于等右侧的值:在进行条件判断时,经常盂耍判断多个条件,例如判断某个值是否在10和20 Z间(10 x20),那么我们就需耍使用逻辑运算符。例如卜而的例子,判断一个数值是否在2和 15之间,我们不能这样做:If 2 temp 2 And temp 5 ThenMsgBox和y5都成立!Endif这段代码使用了 And逻辑运算符,只仃x等和y人J;5都成立
36、的时候卜,才会弹 出MsgEox对话框。卜面的例子使用了 Or运算符,所以只要x等J: 1和y大J: 5这2个条 件有- 个满足,结果就是True,就会显示MsgBox対话框:Excel与VBA程序设计CopFnght 2005 马维峰3VBA初步39If x = 1 Or y 5 ThenMsgBox n x=l和y5至少有一个成立! “End If如果读者对逻辑运算符还何什么疑惑的话,可以输入这2个例子到VBA代码编辑器 中,改改条件,自己试试就会明白了。我们接下来看一个比较复杂的例子:Function Degree(f As Double) As StringIf f = 60 = 70
37、 And f = 85 And f = 100 ThenDegree =优秀ElseDegree = ”错误的成绩End IfEnd Function这个例子是一个两数,这个两数有一个参数f代表了成绩,输入一个成纟贞后,他根据 成绩的范屈,然后返回成绩的描述,例如是不及格还是良好等等。条件语句可以恢套,以判断复杂的条件,例如:#001Function DegreePlus(f As Double, Subject As String) _#002As String#003#004If Subject = 11 语文11 Then#005If f = 60 And f = 100 Then#00
38、8Degree = ”语文及格#009Else# 010Degree = “语文错误的成绩”# 011End If# 012Elself Subject = ”数学Then#013If f = 60 And f = 100 Then# 016Degree = ”数学及格”#017Else#018Degree =数学错误的成绩”#019End If#020Else#021Degree =错谋的科目”#022End If#023 End Function这段代码是一个嵌套条件语句的例了。嵌套循环的意思是在条件语创内部可以I茨套条 件语句。代码的外层判断判断成绩的科冃:#001If Subject
39、=诵文Then#002#003Elself Subject = ”数学Then#004#005Else#006Degree = *错误的科目#007End If然后在判断条件语句之内,又添加了新的条件语句,在科目为“语文”的情况下,第5行到第11行为一个条件语句,判断语文科冃的成绩;同样在科冃为“数学”的情况卜, 第13到19行的条件语句判断科目数学的成绩。32&循环语句卜面來学习循环语句,我们还是从一个实例开始:Sub NoLoop()Dim sum As Longsum sum+ 1sum =sum+2sum =sum+3sum =sum+4sum sum+5sum =sum+6sum =
40、sum+7sum =sum+8MsgBoxsum& sumEnd Sub这段代码计算从1加到8的值,最后使用MsgBox输出结果。在不使用循环语旬的前 提卜,这样的程序对数据不多的情况,还可以实现.如果数据是从1到1000的值,我们 不可以写1000条语句來计算这样的结果,这时就石要使用循环语句。For.Next 循环For.Next循环是VBA循坏语句的一种,以上代码町以便用For.Next循环改写为以卜形式:#001 Sub Loopl()#002Dim i As Long#003Dim sum As Long#004For i = 1 To 8#005sum = sum + i#006N
41、ext i#007MsgBox nsum 取&sum#008End Sub这样,如果我们耍从1加到1000,我们只需耍把第4行改为:For i=1 To 1000这样,代码就可以从1加到1000这就是循环语旬。循环语句首先指定循环的范用, 缶耍一个数据类型为整型的循坏变吊:(例如imeger. Long),这个变鼠毎次递増1或者其 他指定的值,直到这个值超出了循环指定的循环范BLZ外。以上代码使用了循环变磺- 我们也可以使用任意变灵。指定循坏范用使用“最小值To最大值”的形式:之后是循坏 的内容,可以是一句或者一段代码;最后便用“Next循环变量”这样的语句结束循环。我们还可以使用Step参数
42、指定循环变就递増或石递减的步了(吊),例如我们需耍计 算“1,3, 5, .,999”的和,我们可以使用如卜的代码:Sub Loop2()Dim i As LongDim sum As LongFor i = 1 To 999 Step 2sum sum + iNext iMsgBox 11 sum = & sumEnd Sub这里使用了 “Srep2”这样的语句,意思是循环变帚l递壇的步子是一次增加2,这样 从1开始,每次增加2,直到L小J等999,结果就是“ 1, 3, 5, ., 999的和。当Step 为1的时候,可以省略Step语句。Step可以是正数,也可以是负数,负数表示递减。例
43、如 F面的代码:Sub Loop3()Dim i As LongFor i = 10 To 1 Step -1MsgBox iExcel与VBA程序设计Copyright Q 2005 巧维峥3VBA初步43Next iEnd Sub输出的结果依次是:10, 9, 8, 7, 6, 5, 4, 3, 2和1。Excel VEA开发中经常使用For.Next循环來操作某个范由Z内的匸作表数据,例如 读取C列第2行到第25行的数拥,或者写入第四行第4列到笫50列的数据。For.Next循环也町以械套使用,即在循环内部在增加一个或数个循坏,如果我们需 耍编写一个査找工作表的程序,那么就町以使用第一个
44、循环査找不同的行,然后使用第二 个循环查找每一行中不同的列。例如,我们在当前丁作表第1到第20行的第1到第5列中 査找某个值的代码町以这样编写:#001Sub FindlnSheet()#002Dimvar#003Dimi As Long, j As Long#004#005var=3#006#007Fori = 1To 20#008For j=1 To 4#009IfActiveSheet.Cells(i 9 j).Value _# 010=var Then# 011MsgBox 1 找到了: ” & i & ,f z M & j#012EndIf#013Next j# 014Next i# 015End Sub在第1到第20行的第1到第5列的某个单尤格输入3,然后运行这段程序,当程序何 找到这个单元格,会弹出对话框,显示行和列的值。这段代码第7行到第14行泄义了第一 个循环,在Jt内部定义了第二个循环(8到13行),然后通过一个条件语句判断当前单元 格的值和要査找的值是否相同。其中的“ ActiveSheet.Cells(L, j).Value 为Excel对象, ActiveSheet衷
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽车安全检验政策解读
- 地下水水文地质工程地质研究重点基础知识点
- 连片土地转租合同协议
- 车辆购买赠送协议书范本
- 运输木架租借合同协议
- 员工试用期劳动合同协议书
- 产业园区租赁经营协议书
- 投资咨询服务合同协议
- 旧房改造协议书
- 旅游酒店连锁管理服务合同
- 华大新高考联盟2025届高三4月教学质量测评化学+答案
- 全国行政区域身份证代码表(电子表格版)
- (部编版)语文四年级上册课外阅读“天天练”100篇,附参考答案
- 银屑病治疗新进展
- 【工程法规】王欣 教材精讲班课件 35-第6章-6.1-建设单位和相关单位的安全责任制度
- 新教科版小学1-6年级科学需做实验目录
- 静疗护理典型案例
- 小学六年级下册综合实践.策划小学毕业典礼--(14张)ppt
- 《特种设备目录》(2022年第114号)
- 声乐参赛评分表
- 钢箱梁运输及安装施工方案
评论
0/150
提交评论