VBA)培训.ppt

上传人:赵** 文档编号:63681781 上传时间:2022-11-25 格式:PPT 页数:106 大小:460KB
返回 下载 相关 举报
VBA)培训.ppt_第1页
第1页 / 共106页
VBA)培训.ppt_第2页
第2页 / 共106页
点击查看更多>>
资源描述

《VBA)培训.ppt》由会员分享,可在线阅读,更多相关《VBA)培训.ppt(106页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Visual Basic for Application(VBA)培训)培训铸管部20062021/9/261目 录什么是VBA对象、属性和方法数据类型、变量和常量赋值语句、运算符和内部函数内部对话框程序流程控制语句模块、子程序和函数用户窗体和控件自定义菜单与工具条若干实例2021/9/2620 什么是VBA像Borland Delphi、VC+及其它的应用程序一样,VBA是一种应用程序开发工具,但是与它们不同,VBA是唯一由其他应用程序控制的应用程序开发工具,它可以增强其他应用程序的功能。VBA实际上是建立在Office中的标准宏语言,可以有效的自定义和扩展那些使用了VBA应用程序的功能。V

2、BA实际上是VB的派生体,为了在应用程序中使用方便而有针对性的优化和设置了VB。2021/9/2631 对象、属性和方法 目前,面向对象程序设计(object-oriented programming,简称OOP)被广泛使用,主要是因为它采用了模块化设计,可以实现四个目标:v可检验的(verifiable);v可修正的(revisable);v可重复使用的(reusable);v可移植的(transportable)。2021/9/264 或说具有三个基本概念的支持:数据封装、继承性和多态性。在OOP中,代码对象是一个容器(container),容器中包括数据和处理该数据的代码,即对象的属性和

3、方法都包含在对象的定义中。代码对象具有属性和方法。属性(properties)是对象的外部可见数据(visible-data);方法方法(methods)是对象处理数据的过程。其中,外部可见数据是在对象外部可以存取的数据,属性可以是对象处理的数据,或者用来控制对象的行为和外观。当执行一个方法时,该方法仅处理对象所包含的属性,一个对象的方法不能直接改变另一个对象的属性值,但是一个对象的方法可以请求其他对象自行改变它们自己的属性值。2021/9/265一个对象可以基于对另一个对象的描述。代码对象还可以是其他较大代码对象的组成部分,即对象可以组合。当一个对象是另一个对象的组成部分时,后者就要继承(i

4、nheritance)前者的所有属性和方法。为存取组合对象的属性和方法,书写格式必须从最外层容器对象开始向内层写,直至需要存取属性和方法的那个对象,对象名间用小数点分隔。许多对象可以具有相同的方法,不同对象调用该方法都会产生正确的操作。每个对象是一个特定的、唯一的事物。一个类(class)则是指具有特定类型的所有对象,所以类是对象定义的最高级别,可以用一个类来创建一个对象。2021/9/266 Excel对象包括工作表、工作簿、图表和单元格区域等,菜单、工具条以及Excel工作表函数库也都是对象。q对象集合v在VBA中使用集合(collection)来存取大多数工作表对象。如Workbooks

5、,Worksheets等。格式为:集合(集合(“成员名称成员名称”););或:集合(或:集合(“整数值整数值”),其中整数值表示成员位置序),其中整数值表示成员位置序号。号。如工作簿名为Sales,且工作表West位于该工作簿的第二个表,则下列代码用于存取同一工作表。Workbooks(“Sales”).Worksheets(“West”)Workbooks(“Sales”).Worksheets(2)2021/9/267v获取集合的信息Sub GetInformation()Worksheets(1).Range(B2).Value=Worksheets.Count Count属性是统计该集

6、合中成员的个数Worksheets(1).Range(B3).Value=Worksheets.Parent.Name Parent属性包含集合的父对象的名称Worksheets(1).Range(B4).Value=Worksheets(3).NameEnd Subv在集合中增加、删去成员Worksheets.Add 在工作表集合的开头添加一个缺省类型的新工作表Worksheets(3).Delete 删去第3个工作表2021/9/268q用Range对象存取单元格 工作表上的单个单元格并不是对象,工作表上的单元格是通过Range对象来存取的。一个Range对象是工作表上的任意单元格或单元格

7、的矩形组。通过Union函数将互不连通的单元格组合成一个Range对象。生成Range对象的三种可用方法是:vRange方法vCells方法vOffset方法2021/9/269vRange方法 Range方法是用途最广的一种方法。Sub theRanges()Worksheets(1).Range(B1).Value=1 单个单元格Worksheets(1).Range(D2,B2).Value=2 矩形区域Worksheets(1).Range(B3:D3).Value=3 矩形区域Worksheets(1).Range(B4,E5,D6).Value=4 三个孤立的单元格Union(Wo

8、rksheets(1).Range(“B7:D7”),Worksheets(1).Range(“C8”).Value=5 两个不连通的区域Worksheets(1).Range(B9:D9,F9).Value=6 两个不连通的区域End Sub注意:矩形区域的表示方法有二:Range(“列1行1:列2行2”)Range(“列1行1”,“列2行2”)2021/9/2610注意:若把Range方法用于Range对象,不管单元格引用是否是直接单元格名,Range方法对Range对象的引用都是相对于Range对象的左上角的。例如:Range(B1).Range(A2).Value=1 实际上是B2单元

9、格的值为1。v Cells方法 Cells方法的格式为:Cells(i,j)其中:i表示单元格行号;j表示列号,有时j可以用“字母”替代。注意事项同上。2021/9/2611vOffset方法 Offset方法 是专门相对于当前单元格创建的Range对象,格式为:Range(“”)或或Cells(i,j).Offset(m,n)其中:m表示行偏移量;n表示列偏移量。v相对偏移方法比较:.Range(“B4”).Cells(4,2).Offset(3,1)vRange方法的简写 Range方法可以采用一种简写的形式。如:Worksheets(1).Range(“E7”)可简写为:Workshee

10、ts(1).E72021/9/2612q活动属性VBA拥有应用软件对象的几个特殊属性,即其活动属性(active properties)。活动属性的取值总是取决于特定类的当前活动对象,活动对象可以是工作簿和工作表重叠窗口中的最顶层的表,或是Range对象的活动单元格,或是图形对象中被选中的对象。活动属性经常和Select方法、Activate方法一起使用。Select用以选择一个单元格区域或一个表;Activate用以激活当前选择对象中的一个单个单元格或选择一个表(此时同于Select)。2021/9/2613 ActiveWorkbook属性值取决于当前显示的工作簿;ActiveSheet属

11、性值取决于活动工作簿中最顶层的表,可以是工作表(worksheet)、图表(chartsheet)、宏表(macro sheet)或模块表(module sheet)。ActiveCell属性值取决于一单个单元格Range对象。Selection属性与ActiveCell属性紧密相关,但Selection属性值取决于所有被选中的单元格,而不是单个活动单元格。2021/9/2614Sub ActiveProperty()ActiveWorkbook.Worksheets(1).Select 活动工作簿的第一张工作表被选中ActiveSheet.Range(B3).Select 活动工作表的单个单

12、元格B3被选中ActiveCell.Value=23 活动单元格的数值ActiveCell.NumberFormat=0.00 活动单元格数据格式ActiveCell.HorizontalAlignment=xlCenter 活动单元格数据位置水平居中ActiveCell.BorderAround Weight:=xlThick,ColorIndex:=4 一种方法,与属性Borders.LineStyle相对应,单元格外框厚的绿色ActiveCell.Interior.ColorIndex=6 单元格背景黄色ActiveSheet.Range(“B5:D6”).Select 活动工作表的一片

13、单元格被选中Selection.Value=23Selection.NumberFormat=0.00Selection.HorizontalAlignment=xlCenterSelection.BorderAround Weight:=xlThick,ColorIndex:=4Selection.Interior.ColorIndex=6ActiveSheet.Range(A1).Select 将活动单元格置于A1End Sub2021/9/2615q格式属性 上例已经引入了格式属性,实际中强烈建议用记录宏的办法获取其格式。q内容属性 工作表单元格中放入数据有两种途径:一是使用Range对

14、象的Value属性;二是使用Formula属性。Range(B2).FormulaR1C1=宋 Range(B3).Formula=杰 Range(B4).Value=鲲 Range(B5).Formula=2*3 Range(B6).FormulaR1C1=R-1C+2 Range(B7).Value=2*3 Range(B8).Formula=B5+2一样的效果一样的效果一样的效果2021/9/26162 数据类型、变量和常量 变量(variable)和数据类型(data type)决定着数据在计算机内存中的存储方式及存放地点。q数据类型是指数据值在内存中的存储方式,包括数据值大小、有效位

15、及是否有小数部分。VBA中,有11种内部数据类型:布尔型(Boolean)整数(Integer)长整数(Long)单精度浮点数(Single)双精度浮点数(Double)货币(Currency)日期(Date)字符串(String)对象(Object)数组(Array)变体(Variant)2021/9/2617 创建自定义数据类型:将几个现有的数据类型联合在一起组成一个结构,可能更便于使用。用Type语句可定义一个数据结构,格式为:Type 结构名结构内元素1 As 数据类型结构内元素2 As 数据类型 End Type注意:Type不能放在Sub、Public、Function、Funct

16、ion中,而应单独在最初的变量声明中创建。q变量是内存中被命名的存储位置,即在内存地址 和变量名之间建立了一种线性映射关系。2021/9/2618v变量名可由字母、数字及标点符号组成。必须以字母打头,且不能包含空格、小数点及类型声明符(#、$、%、&、!)。可以在变量名中使用大写字母,在VBA中并不区别大小写字母。通常将多个词用下划线或大写字母连起来构成具有含义的变量名。v变量的声明强制声明变量:应在每个模块的开始处加入一条Option Explicit,这样程序运行时遇到未定义类型的变量,会显示出错信息。用Dim语句声明变量,格式有:当没有“As 数据类型”或为“As Vatiable”时,

17、意味着该变量为变体类型。DimDim 变量名变量名 AsAs 数据类型数据类型,变量名,变量名 As 数据类型数据类型,2021/9/2619用Public声明全局变量:Public声明的变量在应用软件的任何子程序中都是有效的。定义数组变量:建议用格式:Dim Dim 数组名(数组名(number1 to number2number1 to number2)AsAs 数据类型数据类型 q定义和使用常量,格式为:Const 常量名常量名=常数值常数值q变量和常量都有一定的有效作用范围(也称 作用域)。注意:一旦使用常量,绝不可再给常量赋值。2021/9/2620Option ExplicitDi

18、m ok As String ok的有效作用范围为整个模块Public Const z=15 z的有效作用范围为整个模块,且不可再赋值Sub sjk1()Dim x As Integer x的作用域为该子程序x=10ok=yesMsgBox x=&xEnd SubSub sjk2()MsgBox okMsgBox z=&zEnd Sub说明:在未运行sjk1之前,ok=“”。2021/9/26213 赋值语句、运算符和内部函数 定义了变量,即可使用变量进行实际工作。q赋值语句 格式为:变量名变量名=表达式表达式 其中:变量名可以是普通变量,数组或对象属性;表达式可以是数值,也可以是由变量、运

19、算符、常量和函数组成的公式。注意对象变量的赋值格式:Dim 变量名 As Object Set 变量名=计算对象值的表达式 2021/9/2622Sub ObjectiveVar()Dim theArrange As ObjectSet theArrange=ActiveSheet.Range(B2)theArrange.Value=2End Subq运算符 VBA的基本运算是通过运算符来实现的。算术运算符字符串运算符关系运算符(比较运算符)逻辑运算符 2021/9/2623运算符说明乘方运算-取非运算*乘运算/除运算整除运算Mod取模运算+加运算-减运算&字符串连接运算相同优先级相同优先级当

20、然,()是约束运算优先级的更好办法。v常用的算术运算符与字符串运算符(按其优先 级由高到低顺序)如下:2021/9/2624运算符的练习:可在视图/立即窗口中进行,许多程序的试算均可在立即窗口中进行。键入?(或Print)试算运算 运算 1,运算2,;每隔14个字符出一个结果 字符串的连接用“&”或“+”均可 如果改为?c=a+b,显示False。因为c=0,a+b=3,不提倡2021/9/2625v关系运算符关系运算符也称逻辑比较运算符,其结果为True或False。运算符说明=等于不等于大于=大于或等于Is相同(仅用于对象)Like等效于通配符2021/9/2626说明:被比较变量中的任一

21、个变量值为非合法值Null,表达式也将返回Null。与Is相当的逻辑测试函数有:函数说明IsArray()自变量为数组,返回真IsDate()自变量为日期,真IsEmpty()自变量为空字符串,真IsError自变量为错误值,真IsNull()自变量为Null,真IsNumberic()自变量为数值,真IsObject自变量为对象,真IsMissing()调用子程序时判断是否有数值从外部传给可选自变量。没有,真2021/9/2627可以和Like运算符一起使用的通配符:通配符(Wild-Card)匹配字符(Matches)*任意个字符?任意一个字符#任意一个数字(09)字符表任意一个在字符表中

22、出现的字符!字符表任意一个未在字符表中出现的字符2021/9/2628v逻辑运算符(布尔运算符)逻辑运算符是关系运算符的扩展工具,把若干逻辑比较组合在一起,形成为一个逻辑表达式。运算符说明Not非或负And与Or或Xor异或Imp蕴含Eqv等价ATTFFBTFTFA Xor BFTTFA Imp BTFTT2021/9/2629q内部函数v数学函数截断取整函数最大取整函数2021/9/2630数学函数中还有两个重要的产生随机数的函数:Randimize和Rnd()。要说明的是,随机数是计算出来的,初值相同,得到的随机数也相同。建议在一个使用Rnd()函数计算随机数的程序中,首先执行一次Rand

23、omize。Randomize用系统时间计算初值,函数初始化随机数发生器使之每次发出的随机数各不相同;Rnd()产生随机数:当自变量为负数时,Rnd()函数将以该自变量作为初值;当自变量为0,该函数将返回上一个随机数;如果自变量为正数或空,该函数将返回下一个随机数。2021/9/2631v字符串函数变为小写字母变为大写字母统计字符串长度寻找字符串或字符位置左边4个字符右边6个字符更换从第13个字符开始的5个字符从第5个字符开始的3个字符2021/9/2632在定长字符串中作左对齐调整在定长字符串中作右对齐调整产生6个空格产生6个字符*删除字符串左边空格删除字符串右边空格删除字符串两边空格字符串

24、比较函数:StrComp(String1,String2,Compare)Compare=0,二进制码比较形式;Compare=1,正文比较形式。2021/9/2633取一个字符的AscII码取一个AscII码对应的字符将数值转换为字符串将一个数转换为十六进制的字符串将一个数转换为八进制的字符串&o和&h用于定义八进制数和十六进制数。Val()函数:略去了字符串左侧的空格,并转换字符串直至字符串中的非数字字符;不仅略去了字符串中的其他正文和空格,而且略去了数字字符中间的空格,如val(“&o 3 3”)=27将字符串转换为数值2021/9/2634v日期、时间及格式函数2021/9/2635v

25、数据类型转换函数函数说明CBool转换数据类型为布尔型Ccur货币Cdate日期CDbl双精度浮点数Cint整数CLng长整数CSng单精度浮点数CStr字符串Cvar变体CErr错误号2021/9/26364 内部对话框内容概要:消息框Msgbox()输入框Inputbox()Excel内部对话框v消息框Msgbox()用途:输出简单的错误、警告或提示信息给 使用者。2021/9/2637语法:Msgbox(prompt,buttons,title,helpfile,contexttitlepromptbuttonsSub Prepare()Dim theCode As Integer,th

26、eReply As IntegertheCode=vbYesNo+vbDefaultButton1+vbInformationthreply=MsgBox(prompt:=Are you sure you want to quit?,Title:=Msgbox Test,Buttons:=theCode)MsgBox Are you sure you want to quit?,theCode,Msgbox Test“作用同上End Sub2021/9/2638自变量含义prompt必要的自变量。作为显示在消息框中的信息字符串。buttons选择性自变量。数值运算式,用来指出显示按钮的数目及形

27、式、使用的图标样式、缺省按钮以及消息框的强制响应等。如果没有指定,则buttons的默认值是0。title选择性自变量。显示在对话框标题列中的字符串运算式。如果没有title,则将应用程序的名称放在标题列中。helpfile选择性自变量。用来识别提供给对话框文字感应说明的说明文档的字符串运算式。如果指定了helpfile,则也必须指定context。context选择性自变量。数值运算式,由说明文档的作者来指定适当的说明主题代码。如果指定context,则也必须指定helpfile。其中,buttons自变量的设定影响深远,其设定值可概分为四组:第一组值(0-5)用来决定对话框中按钮的形式与数

28、目;第二组值(16,32,48,64)用来决定图标的样式;第三组(0,256,512)决定出哪一个按钮是缺省按钮;而第四组(0,4096)则决定消息框的强制响应性。2021/9/2639第1组(按钮设定):决定消息框中的按钮样式。常数值说明vbOkonly0只显示“确定”按钮vbOkCancel1显示“确定”和“取消”按钮vbAbortRetryIgnore 2显示“异常终止”、“重试”和“略过”按钮vbYesNoCancel3显示“是”、“否”和“取消”按钮vbYesNo4显示“式”和“否”vbRetryCancel5显示“重试”和“取消”第2组(图标设定):决定消息框中的图标样式。常数值说

29、明vbCritical16显示vbQuestion32显示vbExclamation48显示vbInformation64显示2021/9/2640第3组(缺省按钮设定):决定何者为缺省按钮。常数值说明vbDefaultButton10以第一个按钮为缺省按钮vbDefaultButton2256以第二个按钮为缺省按钮vbDefaultButton3512以第三个按钮为缺省按钮vbDefaultButton4768以第四个按钮为缺省按钮第4组(类型设定):决定对话框的类型(强制响应性)。常数值说明vbApplicationModal0应用程序强制响应;使用者必须先响应此消息框,才能在目前的程序中

30、继续工作。vbSystemModal4096系统强制响应;所有的应用程序都会暂停,直到使用者响应此消息框。说明:表中的“常数”都是Visual Basic内定的,便于记忆及识别用;四组设定值,可从每组数值常数中选一个出来相加(+),以得到不同效果。也可取其和。2021/9/2641Sub example()Dim button(4)As Integerbutton(0)=MsgBox(消息框示范,1+64,vbOkCancel+vbInformation)button(1)=MsgBox(要终止吗?,4+32+256,vbYesNo+vbQuestrion+vbDefaultButton2)b

31、utton(2)=MsgBox(注意!Visual Basic开课了!,48+4096,vbOk+vbSyetemModal)button(3)=MsgBox(示范结束,2+16,vbAbortRetryIgnore+vbStop)End Sub2021/9/2642Sub makeDialog1()Dim theCode As Integer,theReply As Integer theCode=vbYesNo+vbDefaultButton2+vbExclamation+vbApplicationModel theReply=MsgBox(prompt:=Do you really wa

32、nt to do this?,Buttons:=theCode)Select Case theReply Case vbYes He really wants to do this,so go ahead Code block for Yes answer Debug.Print Yes Case vbNo Code block for No answer Debug.Print No End SelectEnd Sub按钮虚框表示缺省按钮图标2021/9/2643vInput Box()格式:InputBox(prompt,title,default,xpos,ypos ,helpfile,

33、context)Sub Hello()Dim str As Stringstr=InputBox(Hello!,向您问好:,宋杰鲲)End Sub2021/9/2644Private Sub UserForm_Activate()Dim str As Stringstr=InputBox(请输入字体,字体,宋体)lbl.Caption=str&展示:With txt.Text=您好!.Font=str.FontSize=20End WithEnd Sub2021/9/26455 控制程序流程q分支结构v块If结构vSelect Case结构vGoTo非结构化分支q循环和重复结构vFor-Nex

34、t循环vDo-Loop重复结构vWhile-Wend重复结构vFor-Each循环2021/9/2646q分支结构块If结构v块If结构1单块If-Then结构Option ExplicitFunction thePay(hours As Single,Optional PayRate)As CurrencyConst DefaultRate=5.25If IsMissing(PayRate)Then PayRate=DefaultRateEnd IfthePay=hours*PayRateEnd Function格式:If 逻辑表达式 Then语句块EndIf 例题:2021/9/2647S

35、ub test()Dim theHours As Single,theRate As CurrencyDim Pay1,Pay2 As CurrencytheHours=40theRate=8.75Pay1=thePay(theHours)只有一个参数,theRate采用缺省值5.25Pay2=thePay(theHours,theRate)两个参数Debug.Print Format(Pay1,$#,#0.00),Format(Pay2,$#,#0.00)End Sub在立即窗口通过Run()语句运行程序2021/9/2648Function thePay2(hours As Single,

36、Optional PayRate,_ Optional Sales)As CurrencyDim Bonus As CurrencyConst DefaultRate=5.25:Const BonusThreshold=5000Const BonusValue=500If IsMissing(PayRate)Then PayRate=DefaultRateEnd IfBonus=0If Not IsMissing(Sales)Then If Sales BonusThreshold Then Bonus=BonusValue End IfEnd IfthePay2=hours*PayRate+

37、BonusEnd Function嵌套不能用If()And()替代,因为当Sales无值时,无法将其与一个数值比较,类型不匹配,导致出错。2021/9/2649v块If结构2If-Then-ElseIf多块结构 格式:If 逻辑表达式1 Then语句块1ElseIf 逻辑表达式2 Then语句块2ElseIf 逻辑表达式3 Then语句块3其它ElseIf语句End If2021/9/2650Function thePay2(hours As Single,Optional PayRate,_ Optional Sales)As CurrencyDim Bonus As CurrencyCon

38、st DefaultRate=5.25:Const BonusThreshold=5000Const BonusValue=500If IsMissing(PayRate)Then PayRate=DefaultRateEnd IfBonus=0If IsMissing(Sales)Then 什么都不再作ElseIf Sales BonusThreshold Then Bonus=BonusValueEnd IfthePay2=hours*PayRate+BonusEnd Function2021/9/2651v块If结构3Else从句 格式:If 逻辑表达式1 Then语句块1ElseIf

39、逻辑表达式2 Then语句块2其它ElseIf语句Else其它语句块End If2021/9/2652Function thePay2(hours As Single,Optional _ PayRate,Optional Sales)As CurrencyDim Bonus As CurrencyConst DefaultRate=5.25Const BonusThreshold=5000Const BonusValue=500If IsMissing(PayRate)Then PayRate=DefaultRateEnd IfBonus=0If IsMissing(Sales)Then 什

40、么都不再作ElseIf Sales BonusThreshold Then Bonus=BonusValueEnd If2021/9/2653If hours 40)And(hours=7Case Is 10Const yearly=0Const monthly=1Const bimonthly=2Const quarterly=3Const semiannually=4Function thePmt(theRate As Single,nyrs As Integer,_pv As Currency,PeriodType As Integer)Dim nper As Integer,fv As

41、 Currency,rate As Single2021/9/2656fv=0Select Case PeriodType Case yearly nper=nyrs rate=theRate Case monthly nper=nyrs*12 rate=theRate/12 Case bimonthly nper=nyrs*6 rate=theRate/6 Case quarterly nper=nyrs*4 rate=theRate/4 Case semiannually nper=nyrs*2 rate=theRate/2End Select2021/9/2657thePmt=-Appl

42、ication.Pmt(rate,nper,pv,fv)End FunctionvSelect Case结构2 在上述程序的Select Case语句最后加入Case Else thePmt=CVErr(xlErrValue)Exit Function说明:要使用其它错误值信息,如#NUM!,可在对象浏览器中选择xlErr,察看xlCVError下的所有常量,如#NUM!对应xlErrNum。2021/9/2658q分支结构GoTo语句 格式:GoTo 行语句标号名或 If 逻辑表达式 Then GoTo 行语句标号名If PeriodType yearly Then GoTo lmonth

43、nper=nyrs rate=theRate GoTo getvallmonth:If PeriodType monthly Then GoTo lbimonth nper=nyrs*12 rate=theRate/12 GoTo getval2021/9/2659lbimonth:If PeriodType bimonthly Then GoTo lquarter nper=nyrs*6 rate=theRate/6 GoTo getvallquarter:If PeriodType quarterly Then GoTo lsemiannual nper=nyrs*4 rate=theRa

44、te/4 GoTo getvallsemiannual:If PeriodType semiannually Then GoTo lelse nper=nyrs*2 rate=theRate/2 GoTo getval2021/9/2660lelse:thePmt=CVErr(xlErrNum)GoTo donegetval:thePmt=-Application.Pmt(rate,nper,pv,fv)done:End Function注意:某一行语句的标号名必须写在一行语句的开始并用冒号与后面的语句分开。尽可能避免使用GoTo非结构化分支语句。2021/9/2661q循环和重复结构For-

45、Next循环 格式为:For 循环变量=初值 To 终值 Step 步长(缺省为1)循环体1Exit For 循环体2Next 循环变量Exit For可以没有,它是强制终止循环的语句,执行中遇到该语句,程序将中断循环,到Next语句的下一语句执行。循环变量是个一般变量,可在循环体中对其修改,但应避免在循环体中修改该变量。2021/9/2662Sub BlockAverage()Dim numRows As Integer,numCols As IntegerDim theRow As Integer,theCol As IntegerDim i As Integer,j As Integer

46、Dim theAverage As Single,theSum As SingleDim myArray()As Single 未声明大小的动态数组numRows=Selection.Rows.CountnumCols=Selection.Columns.CountReDim myArray(numRows,numCols)根据实际需要重新确定动态数组大小For theRow=1 To numRows For theCol=1 To numCols myArray(theRow,theCol)=Selection.Cells(theRow,theCol).Value Next theColNe

47、xt theRow2021/9/2663theSum=0For i=1 To numRows For j=1 To numCols theSum=theSum+myArray(i,j)Next jNext itheAverage=theSum/(numRows*numCols)MsgBox The average is:&Str(theAverage)End Sub说明:For-Next循环实际上是已知迭代次数的循环语句。q循环和重复结构Do-Loop重复结构 格式为:2021/9/2664v开头判断真逻辑条件:Do While 条件循环体1Exit Do循环体2Loopv结尾判断真逻辑条件:

48、Do循环体1Exit Do循环体2Loop While 条件2021/9/2665v开头判断假逻辑条件:Do Until 条件循环体1Exit Do循环体2Loopv结尾判断假逻辑条件:Do循环体1Exit Do循环体2Loop Until 条件2021/9/2666Function SuShu(m As Long)As StringDim i,t As LongFor i=2 To m-1 t=m Mod i Do While t=0 SuShu=Str(m)&不是素数 Exit For LoopNext iIf(t 0)Or(m=2)Then 由于2不作循环,所以应加入Or这一条件 SuS

49、hu=Str(m)&是素数End IfEnd Function2021/9/2667Function ageDifferent(m As Integer,n As Integer)As String求经过多少年后,父母的年龄是子女的2倍Dim f As ByteDim y,t As Integerf=0y=0If m n Then t=m:m=n:n=tEnd IfDo Until(m=2*n)Or(f 0)m=m+1:n=n+1:y=y+1 If y 50 Then f=1Loop2021/9/2668If f=0 Then ageDifferent=需要&y&年,&m&是&n&的2倍Els

50、e ageDifferent=输入的年龄差距过大(小)!End IfEnd Functionq循环和重复结构While-Wend重复结构 格式为:While 条件循环体Wend2021/9/2669Function MaxYueShu(m As Integer,n As Integer)求两个数的最大公约数,用辗转相除法Dim r,t As IntegerIf m n Then t=m:m=n:n=tEnd Ifr=m Mod nWhile r 0 m=n:n=r:r=m Mod nWendMaxYueShu=nEnd Function2021/9/2670q循环和重复结构For-Each循环

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com