《学习VBA基础知识.pptx》由会员分享,可在线阅读,更多相关《学习VBA基础知识.pptx(108页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数组VBA程序流程控制VBA常用语句VBA编程基础VBA概念VBA概念第1页/共108页1-1 VBA1-1 VBA简介简介 VBA(Visual Basic for Application)是MicrosoftOffice系列软件的内置编程语言,其语法结构与VisualBasic编程语言互相兼容,采用的是面向对象的编程机制和可视化的编程环境。第2页/共108页1-2 1-2 面向对象程序设计的基本概念面向对象程序设计的基本概念1.集合和对象 VBA中的应用程序是由许多对象组成的,如表、窗体、查询等。对象是帮助构造应用程序的元素,以特定的方式组织这些对象,就形成了应用程序。2.对象的属性、事件
2、和方法 属性 属性描述了对象的自身性 质 其格式为:对象名.属性=属性值第3页/共108页1-2 1-2 面向对象程序设计的基本概念面向对象程序设计的基本概念事件 事件是指可以发生在一个对象上且能够被该对象所识别的动作。如:单击某个命令按钮就产生该按钮的“单击”事件当某个对象发生某一事件后,就会驱动系统去执行预先编好的、与这一事件相对应的一段程序。方法 方法是系 统事先设计好的,可以完成一定操作的特殊过程,是附属于对象的行为和动作。在需要使用的时候可以直接调用。其格式为:对象名.方法名第4页/共108页常见对象及其含义常见对象及其含义对 象 名含 义Application代表整个Excel应用
3、程序Window代表窗口Worksheet代表一个工作表Sheets指定的或活动工作薄中所有工作表的集合ShapeRange代表形状区域,它是文档中的一组形状PivotTable代表工作表上的 数据透视图Workbook代表一个Excel工作薄Shape代表绘图层中的对象,例如自选图形Range代表某一单元格、某一行、某一列、某一区域Name代表单元格区域的自定义名Chart代表工作薄中的图表FileDialog提示文件对话框,功能和应用程序中标准“打开”和“保存”对话框类似CommandBarPopup代表命令栏上的一个弹出式控件CommandBar代表容器应用程序中的一个命令栏第5页/共1
4、08页1-3 VBA1-3 VBA编程环境编程环境VBA 中的程序与函数共有种:一般程序(Sub)、事件程序(Event)、属性程序(Property)和函数(Function)VBA程序窗口共种:代码窗口、立即窗口、本地窗口、监视窗口、工程资源管理器和属性窗口在VBE环境中编写VBA代码第6页/共108页工程窗口选择对象属性窗口选择对象的属性代码窗口选择事件VBE编程环境第7页/共108页标准工具条视图视图 Microsoft ExcelMicrosoft Excel按钮:切换按钮:切换ExcelExcel窗口窗口插入按钮:插入模块或过程插入按钮:插入模块或过程运行子过程运行子过程/用户窗体
5、按钮:运行模块中的程序用户窗体按钮:运行模块中的程序中断按钮:中断正在运行的程序中断按钮:中断正在运行的程序重新设置按钮:结束正在运行的程序重新设置按钮:结束正在运行的程序设置模式按钮:在设计模式和非设计模式之间切换设置模式按钮:在设计模式和非设计模式之间切换工程资源管理器按钮:用于打开工程资源管理器工程资源管理器按钮:用于打开工程资源管理器属性窗口按钮:用于打开属性窗口属性窗口按钮:用于打开属性窗口对象浏览器按钮:用于打开对象浏览器对象浏览器按钮:用于打开对象浏览器MicrosoftExcel插入模块运行子过程/用户窗体设计模式中断重新设计工程资源管理器 对象浏览器属性窗口第8页/共108页
6、 新建一个窗体并添加两个命令按钮,运行窗体后,单击第一个按钮,显示一个消息框;单击第二个按钮,退出当前窗体 通过此例,体会可视化编程、面向对象、事件过程、通过此例,体会可视化编程、面向对象、事件过程、应用方法等基本概念。应用方法等基本概念。第9页/共108页数组VBA程序流程控制VBA常用语句VBA编程基础VBA概念VBA编程基础第10页/共108页2-12-1常量、变量常量、变量VBA使用常量、变量来存储值。用来保存在程序运行期间数据。常量:在程序运行中其存储的值不会改变。变量:在程序运行中其值可以改变。第11页/共108页2-1-12-1-1常量常量在程序运行过程中,其值不会被改变的量称为
7、常量。在VBA中有三类常量:1.直接常量 如:10,20%,123.0,“AB”,“VBA程序设计”等2.符号常量3.系统常量 指VBA系统预先定义好的,用户可以直接引用的量。如:acForm,acQuery,vbOk,vbRed 第12页/共108页符号常量符号常量 在程序中,某个常量多次被使用,则可以使用一个符号来代替该常量,这样不仅在书写上方便,而且有效地改进了程序的可读性和可维护性。VBA中使用关键字Const 声明符号常量。其格式如下:Const 常量名 类型符号=常数表达式如:Const PI#=3.1415926第13页/共108页2-1-22-1-2变量变量 变量是内存中的临时
8、单元,存放在程序执行过程中产生的中间结果和最后输出结果。在程序中使用变量,就要给变量定义名称及类型,即对变量进行声明。第14页/共108页变量命名规则变量命名规则1.变量名必须以字母或汉字开头,后可跟字母、汉字、数字或下划线组成(不能含有小数点和空格),长度 不超过255个字符的字符串;2.不能使用VBA中的关键字;3.VBA中不区分变量名的大小写;4.变量名的最后一个字符可以是%、&、!、#、$等表示 数据类型的声明符。说明:常量名的命名规则与变量名的命名规则相同第15页/共108页2-2 2-2 数据类型与变量的声明数据类型与变量的声明在VBA中,数据类型用来决定变量可以保存何种数据。VB
9、A支持多种数据类型,为用户编程提供了方便。第16页/共108页2-2-1 VBA2-2-1 VBA的数据类型的数据类型数据类型数据类型数据类型数据类型类型声明符类型声明符类型声明符类型声明符存储空间存储空间存储空间存储空间 取值范围取值范围取值范围取值范围整型(整型(IntegerInteger)%2 2-32768-327683276732767长整型(长整型(LongLong)&4 4-2147483648-214748364821474836472147483647单精度浮点型单精度浮点型(SingleSingle)!4 4负数:负数:-3.402823E38-3.402823E38-1
10、.401298E-45-1.401298E-45正数:正数:1.401298E-451.401298E-453.402823E383.402823E38双精度浮点型双精度浮点型(DoubleDouble)#8 8负数:负数:-1.79769313486232E308-1.79769313486232E308-4.94065645841247E-3244.94065645841247E-324正数:正数:4.94065645841247E-3244.94065645841247E-3241.79769313486232E3081.79769313486232E308货币型货币型(Currency
11、)(Currency)8 8-922337203685477.5808-922337203685477.5808922337203685477.5807922337203685477.5807日期型日期型(Date)(Date)8 8100100年年1 1月月1 1日日99999999年年1212月月3131日日字符型字符型(String)(String)$0 0字符字符6540065400个字符个字符字节型字节型(Byte)(Byte)1 10 0255255逻辑型逻辑型(Boolean)(Boolean)2 2TrueTrue或或FalseFalse对象型对象型(Object)(Objec
12、t)4 4任何引用的对象任何引用的对象变体型变体型(Variant)(Variant)第17页/共108页2-2-22-2-2变量声明变量声明用Dim或Static语句显式声明局部变量 格式:Dim 变量名 AS 类型 或 Dim 变量名类型符 语句中的“As 类型”子句是可选的。如果使用该子句,就可以定义变量的数据类型。未使用,默认变量的类型为变体型(Variant)。例如:Dim i As integer,s 表示声明了一个名为i的整型变量和一个名为s的变体型变量。第18页/共108页关键字关键字DimDim或或StaticStatic的区别的区别Dim 声明:随过程的调用而分配存贮单元,
13、每次调用都对变量初始化;过程体结束,变量的内容自动消失,存储单元释放。Static 声明:Static 声明的变量,也称为静态变量。静态变量在程序运行过程中一直保留其值,即每次调用过程,变量保持原来的值。第19页/共108页数据类型的转换函数列表数据类型的转换函数列表函数函数返回类型返回类型CByteByteCBoolBooleanCIntIntegerCLngLong(长整型)CSngSingle(单精度浮点型)CDblDouble(双精度浮点型)CCurCurrency(变比整数)CDecDecimalCDateDateCStrStringCvarVariant第20页/共108页识别数据
14、类型的函数识别数据类型的函数TypeNameTypeNameSub abc()Dim i As Integer Dim str As String i=10 MsgBox TypeName(i)str=CStr(i)MsgBox TypeName(str)End Sub第21页/共108页隐式声明变量隐式声明变量 未进行上述的声明而直接使用变量,称变量的隐式声明,采用隐式声明的变量都是变体型(Variant)。注意:VBA中允许不事先声明而直接使用变量,可以通过语句Option Explicit,来要求所使用的变量必须事先声明,否则VBA会发出警告信息。第22页/共108页变量变量a,b,Su
15、ma,b,Sum都没有事先定义都没有事先定义Private Sub Form_Click()Sum=0 a=10 b=20 Sum=a+b Debug.Print Sum=&SumEnd Sub 良好的编程习惯应该是“先声明变量,后使用变量”,这样做可以提高程序的效率,同时也使程序易于调试。VBA中可以强制显式声明,可以在窗体模块、标准模块和类模块的通用声明段中加入语句:Option Explicit第23页/共108页变量的初始化变量的初始化声明而未赋值的变量的值为:n数值型变量初始化为0;n字符型变量为零长度字符串;n变体型变量初始化为 Empty;第24页/共108页2-3-12-3-1
16、算术运算符算术运算符第25页/共108页2-3-22-3-2连接运算符连接运算符 连接运算符:、+(字符串连接)例如:123+456 结果 123456 123&456 结果 123456 使用上 与+的区别:例如:abcdef&12345 结果为 abcdef12345 123&456 结果为 123456 abcdef+12345 结果为 出错 123+456 结果为 579 第26页/共108页2-3-32-3-3关系运算符关系运算符将两个操作数进行大小比较,结果为逻辑值。注意:字符串比较,则按字符的ASCII码值从左到右一一 比较,直到出现不同的字符为止。第27页/共108页2-3-4
17、2-3-4逻辑运算符逻辑运算符将操作数进行逻辑运算,结果是逻辑值第28页/共108页举例举例举例举例例1:用人单位招聘秘书:年龄小于40岁的女性,学历专科或本科 正确的VBA表达式:3=x And x=7 错误的VBA表达式:3=x=7 或 3=x Or x=7 年龄40,性别=“女”,(学历=“专科”,学历=“本科”)And And Or例2:算术表达式:第29页/共108页2-3-52-3-52-3-52-3-5简单的字符处理函数简单的字符处理函数简单的字符处理函数简单的字符处理函数作作 用用关关 键键 字字Option Compare设置字符串比较规则StrComp比较两个字符串StrC
18、onv字符串类型转换Lcase、Ucase大小写变换Space、String重复字符串Len计算字符串长度Format设置字符格式Lset、Rset重排字符串InStr、Left、Ltrim、Mid、RightRtrim、Trim处理字符串Split、Join拆分与连接字符串第30页/共108页Option CompareOption CompareOption CompareOption Compare设置字符串比较规则设置字符串比较规则设置字符串比较规则设置字符串比较规则Option Compare Binary|Text|DatabaseOption Compare Binary:是根据
19、字符的内部二进制表示导出的一种排序A-Za-z汉字Option Compare Text:是根据系统区域确定的一种不区分大小写的一种排序(A=a)(B=b)连接运算符关系运算符逻辑运算第43页/共108页2-5 2-5 2-5 2-5 常用函数常用函数常用函数常用函数 函数实际上是系统事先定义好的内部程序,用来完成特定的功能。VBA提供了大量的内部函数,供用户在编程时使用。函数的调用形式为:函数名(参数表)常用内部函数常用内部函数,在立即窗口练习,体会函数的功能。请参照:VBA函数参考手册第44页/共108页2-6 2-6 2-6 2-6 模块、函数和过程模块、函数和过程模块、函数和过程模块、
20、函数和过程 模块是自定义的过程、函数保存的地方,也是录制的宏保存的场所。有两种基本类型的模块:类模块和标准模块。模块可以通过右键单击工程资源管理器的工程名,选择“插入模块”来新建。新建的模块缺省的名称为“模块1”,“模块2”,建议在属性窗口内更改为有意义的名称。模块任务:(1)保存过程和函数;(2)定义模块内的私有变量或整个工程的公有变量。第45页/共108页2-7 2-7 2-7 2-7 过程过程过程过程过程是最基本的运行单位语法Private|Public|Friend Static Sub name(arglist)statementsExit SubstatementsEnd Sub在
21、以上程序中,Sub 代表过程种类,表示运行指定的操作,但不返回运行结果;第46页/共108页部分部分 描述描述Public可选的。表示所有模块的所有其它过程都可访问这个 Sub 过程。如果在包含 Option Private 的模块中使用,则这个过程在该工程外是不可使用的。Private可选的。表示只有在包含其声明的模块中的其它过程可以访问该 Sub 过程。Friend可选的。只能在类模块中使用。表示该 Sub 过程在整个工程中都是可见的,但对对象实例的控制者是不可见的。Static可选的。表示在调用之间保留 Sub 过程的局部变量的值。Static 属性对在 Sub 外声明的变量不会产生影响
22、,即使过程中也使用了这些变量。name必需的。Sub 的名称;遵循标准的变量命名约定。arglist可选的。代表在调用时要传递给 Sub 过程的参数的变量列表。多个变量则用逗号隔开。statements可选的。Sub 过程中所执行的任何语句组。第47页/共108页2-8 2-8 2-8 2-8 函数函数函数函数函数是具有返回值的过程语法Public|Private|Friend Static Function name(arglist)As type statements name=expression Exit Function statements name=expressionEnd F
23、unction 第48页/共108页部分部分 描述描述Public可选的。表示所有模块的所有其它过程都可访问这个 Function 过程。如果是在包含 Option Private 的模块中使用,则这个过程在该工程外是不可使用。Private可选的。表示只有包含其声明的模块的其它过程可以访问该 Function 过程。Friend可选的。只能在类模块中使用。表示该 Function 过程在整个工程中都是可见的,但对于对象实例的控制者是不可见的。Static可选的。表示在调用之间将保留 Function 过程的局部变量值。Static 属性对在该 Function 外声明的变量不会产生影响,即使
24、过程中也使用了这些变量。name必需的。Function 的名称;遵循标准的变量命名约定。arglist可选的。代表在调用时要传递给 Function 过程的参数变量列表。多个变量应用逗号隔开。type可选的。Function 过程的返回值的数据类型,可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(除定长)、Object、Variant或任何用户定义类型。statements可选的。在 Function 过程中执行的任何语句组。expression可选的。Function 的返回值
25、。第49页/共108页函数函数函数函数和和和和过程过程过程过程区别区别区别区别v调用一个过程(Sub)时,必须键入过程名称以及任何需要的参数值。Call语句可有可无,如果使用它,则参数必须以括号括起来。v调用函数(Function)时,为了使用函数的返回值,必须指定函数给变量,并且用括号将参数封闭起来。第50页/共108页数组VBA程序流程控制VBA常用语句VBA编程基础VBA概念VBA常用语句第51页/共108页3-1 VBA3-1 VBA3-1 VBA3-1 VBA语句书写规则语句书写规则语句书写规则语句书写规则nVBA代码不区分字母的大小写 系统保留字自动转换每个单词的首字母大写;n语句
26、书写自由 一行可书写几句语句,之间用冒号(:)分隔;一句语句可分若干行书写,用续行符(_)将语句分开。第52页/共108页3-2 VBA3-2 VBA3-2 VBA3-2 VBA常用语句常用语句常用语句常用语句赋值语句:给变量、常量或对象的属性指定一个值或表达式。格式:变量名表达式作用:将表达式的值赋值给变量名。一般用于给变量赋值或对控件设定属性值。例如:s=10 Text1.Text 欢迎使用VBA注意:虽然赋值号与关系运算符等于号都用“=”表示,VBA会 根据所处的位置自动判断是何种意义的符号第53页/共108页声明语句:命名和定义常量、变量、数组以及过程。注释语句 在程序中的适当位置加上
27、注释语句有利于程序的维护和阅读。格式:Rem 注释内容 或用单引号 注释内容第54页/共108页数组VBA程序流程控制VBA常用语句VBA编程基础VBA概念VBA程序流程控制第55页/共108页顺序、分支、循环顺序、分支、循环顺序、分支、循环顺序、分支、循环 结构化程序设计由结构化程序设计由顺序、分支、循环顺序、分支、循环这这3 3种基本结构所组成。种基本结构所组成。语句组2语句组1TF语句组2条件语句组1FT条件语句组TF条件语句组第56页/共108页4-14-14-14-1分支结构分支结构分支结构分支结构单行 If 语句格式:If 表达式 Then 语句1 Else 语句2功能:If 测试
28、指定的条件,如果条件表达式为真 (True),则执行Then 后面的语句1,否则 执行语句2(若Else子句未省略)。TF语句2条件语句1TF条件语句1第57页/共108页Private Sub p1()Dim x As Integer,y As Integer x=InputBox(“请输入x值”)If x=0 Then y=2*x+1 Else y=1 MsgBox y:&yEnd Sub根据输入根据输入x x的值,观察的值,观察y y的输出结果的输出结果单行If语句举例第58页/共108页多行多行多行多行IfIfIfIf语句语句语句语句 语句组可以由一条或多条语句组成,语句组不能与The
29、n书写在同一行,否则VBA认为是一个单行If语句,会导致Else没有匹配的If。语句“End If”是多行If语句的结束标志。在多行If语句中,即使省略Else子句,也要写该结束标志。省略Else子句时的多行If语句形式为:If 表达式 Then 语句组 End If第59页/共108页例:计算分段函数例:计算分段函数例:计算分段函数例:计算分段函数单行单行IfIf语句实现:语句实现:If x=0 Then y=cos(x)If x=0 Then y=cos(x)x3+3*x x3+3*x If x0 Then y=sin(x)+sqr(x*x+1)If x0 Then y=sin(x)+sq
30、r(x*x+1)多行多行IfIf语句实现:语句实现:If x0 Then y=sin(x)+sqr(x*x+1)Else y=cos(x)x3+3*x End If第60页/共108页IfIfIfIf语句的嵌套语句的嵌套语句的嵌套语句的嵌套 IfIf语句的嵌套是指语句的嵌套是指IfIf或或ElseElse后面的语句块中又包含后面的语句块中又包含IfIf语句。语句。If If Then1 Then If If Then11 Then End If End If End If End If 第61页/共108页 例:已知x,y,z三个数,使得xyz 用一个IF语句和一个嵌套的IF语句实现If xy
31、 Then t=x:x=y:y=t If yz Then t=y:y=z:z=t If xy Then t=x:x=y:y=t End If End IfIf If语句的嵌套注意事项:书写锯齿型;语句的嵌套注意事项:书写锯齿型;If If 与与End IfEnd If配对配对第62页/共108页 If If Then1 Then 1 ElseIf ElseIf Then2 Then 2 Else Else 语句块语句块 n+1n+1 End If End IfIfThenElseIf语句(多分支结构)第63页/共108页说明说明说明说明 不管有几个分支,依次判断,当某条件满足,执行相应不管有几
32、个分支,依次判断,当某条件满足,执行相应 的语句,其余分支不再执行;若条件都不满足,且有的语句,其余分支不再执行;若条件都不满足,且有 ElseElse子句,则执行该语句块,否则什么也不执行。子句,则执行该语句块,否则什么也不执行。ElseIfElseIf不能写成不能写成 Else IfElse If。第64页/共108页例:已知百分制成绩例:已知百分制成绩例:已知百分制成绩例:已知百分制成绩markmarkmarkmark,显示对应的五级,显示对应的五级,显示对应的五级,显示对应的五级制成绩下列三种方法哪些正确,哪些错误?制成绩下列三种方法哪些正确,哪些错误?制成绩下列三种方法哪些正确,哪些
33、错误?制成绩下列三种方法哪些正确,哪些错误?方法一方法一If mark=90 ThenIf mark=90 Then Print Print 优优 ElseIf mark=80 ThenElseIf mark=80 Then Print Print 良良 ElseIf mark=70 ThenElseIf mark=70 Then Print Print 中中 ElseIf mark=60 ThenElseIf mark=60 Then Print Print 及格及格 ElseElse Print Print 不及格不及格 End IfEnd If方法二方法二If mark 60 ThenI
34、f mark 60 Then Print Print 不及格不及格 ElseIf mark 70 ThenElseIf mark 70 Then Print Print 及格及格 ElseIf mark 80 ThenElseIf mark 80 Then Print Print 中中 ElseIf mark 90 ThenElseIf mark=60 ThenIf mark=60 Then Print Print 及格及格 ElseIf mark=70 ThenElseIf mark=70 Then Print Print 中中 ElseIf mark=80 ThenElseIf mark=
35、80 Then Print Print 良良 ElseIf mark=90 ThenElseIf mark=90 Then Print Print 优优 ElseElse Print Print 不及格不及格 End IfEnd If第65页/共108页:与同类型的下面四种形式之一:表达式 例:A 一组枚举表达式(用逗号分隔)2,4,6,8 表达式1 To 表达式2 60 To 100 Is 关系运算符表达式 Is yx yx yx y,x x x x,y y y y)第70页/共108页循环结构循环结构循环结构循环结构 For For NextNext循环循环 Do Do LoopLoop循
36、环循环第71页/共108页ForForForForNextNextNextNext循环语句循环语句循环语句循环语句 ForForNextNext循环结构:循环结构:将一段程序重复执行指定的次数,其中使用一个计数变量,统计执行的次数。将一段程序重复执行指定的次数,其中使用一个计数变量,统计执行的次数。格式:格式:For For 循环变量初值循环变量初值 to to 终值终值 Step Step 步长步长 语句块语句块 Exit ForExit For 语句块语句块 Next Next 循环变量循环变量 循环体循环体第72页/共108页循环变量得初值循环变量得初值循环变量循环变量=终值终值Exit
37、 ForExit For语句块语句块循环变量加步长循环变量加步长结束False语句块语句块True第73页/共108页注意注意注意注意功能:执行For语句时,“循环变量”设为“初值”;执行到Next语句时,步长加(减)到循环变量上;再执行For语句时,若“循环变量”超过“终值”则循环结束。步长:未指定值时默认为1。若“步长”是正数或0,则“初值”应大于等于“终值”,否则,“初值”应小于等于“终值”。第74页/共108页例:计算累加程序例:计算累加程序例:计算累加程序例:计算累加程序 S=1+2+3+4S=1+2+3+4S=1+2+3+4S=1+2+3+4.+x,.+x,.+x,.+x,并输出结
38、果并输出结果并输出结果并输出结果 方法:接收一个累加的终值,确定一个循环变量,循环变量方法:接收一个累加的终值,确定一个循环变量,循环变量 有有2 2个作用(加数和循环变量),确定一个存储累加和的变个作用(加数和循环变量),确定一个存储累加和的变 量。使用循环计算,最后输出显示结果。量。使用循环计算,最后输出显示结果。Dim s As integer,x As integerDim s As integer,x As integer x=InputBox(x=InputBox(请输入累加的终值请输入累加的终值)For i=l To x For i=l To x s=s+i s=s+i Next
39、 Next 思考:思考:计算计算=1+3+5+7=1+3+5+7X X 或或 2+4+6+82+4+6+8X X 如何编写?如何编写?第75页/共108页例:计算累乘程序例:计算累乘程序例:计算累乘程序例:计算累乘程序 S=1*2*3*4S=1*2*3*4S=1*2*3*4S=1*2*3*4X X X X 方法:接收一个累乘的终值,确定一个循环变量,循环变量有方法:接收一个累乘的终值,确定一个循环变量,循环变量有 2 2个作用(乘数和循环变量),确定一个存储累乘积的变量。个作用(乘数和循环变量),确定一个存储累乘积的变量。使用循环计算,最后输出显示结果。使用循环计算,最后输出显示结果。Dim
40、S As integer,i As integerDim S As integer,i As integer x=InputBox(x=InputBox(请输入累加的终值请输入累加的终值)S=1 S=1 For i=l To x For i=l To x S=S*i S=S*i Next Next 注意:注意:累乘的乘数和乘积变量的初值为累乘的乘数和乘积变量的初值为1 1。第76页/共108页注意:注意:出了循环,循环控制变量值的问题。出了循环,循环控制变量值的问题。例程序段:例程序段:For i=2 To 13 Step 3 For i=2 To 13 Step 3 循环执行次数循环执行次数
41、 debug.Print i debug.Print i 输出输出 i i的值分别为的值分别为:2 5 8 11:2 5 8 11 Next i Next i debug.Print i debug.Print i 出了循环输出为出了循环输出为:i=14:i=14第77页/共108页例例例例:改变循环控制变量对循环的影响改变循环控制变量对循环的影响改变循环控制变量对循环的影响改变循环控制变量对循环的影响 Private Sub Command1_Click()Private Sub Command1_Click()j=0 j=0 For i=1 To 20 Step 2 For i=1 To
42、20 Step 2 i=i+3i=i+3 j=j+1 j=j+1 Print Print 第第;j;j;次循环次循环i=;ii=;i Next i Next i Print Print 退出循环后退出循环后i=;ii=;i End Sub End Sub 正常情况:正常情况:i=1,3,5,7,9,11,13,15,17,19i=1,3,5,7,9,11,13,15,17,19 现在:现在:i=4,9,14,19i=4,9,14,19第78页/共108页DoDoDoDoLoopLoopLoopLoop循环语句循环语句循环语句循环语句形式形式1 1:Do While|Until Do While
43、|Until 语句块语句块 Exit Do Exit Do 语句块语句块 Loop Loop第79页/共108页形式形式2 2:DoDo 语句块语句块 Exit Do Exit Do 语句块语句块 Loop While|Until Loop While|Until DoLoop循环语句第80页/共108页DoDoDoDoLoopLoopLoopLoop语句语句语句语句(循环结构循环结构循环结构循环结构)Do While Loop语句Do Until Loop语句Do Loop While语句Do Loop Until语句第81页/共108页Do While Do While Do While
44、Do While Loop Loop Loop Loop语句语句语句语句 i=1i=1i=1i=1 Do While i=10 Do While i=10 Do While i=10 Do While i=10 s=s+i s=s+i s=s+i s=s+i i=i+1 i=i+1 i=i+1 i=i+1 Loop Loop Loop Loop n n当当当当i=10i=10i=10i=10成立时,执行循环体成立时,执行循环体成立时,执行循环体成立时,执行循环体n n循环变量循环变量循环变量循环变量i i i i必须有初值必须有初值必须有初值必须有初值n n防止产生死循环防止产生死循环防止产生
45、死循环防止产生死循环n n有可能一次也不执行循环体有可能一次也不执行循环体有可能一次也不执行循环体有可能一次也不执行循环体修改循环控制变修改循环控制变量,改变加数值量,改变加数值第82页/共108页 Do Do Do Do Loop While Loop While Loop While Loop While i=1i=1i=1i=1 Do Do Do Do s=s+i s=s+i s=s+i s=s+i i=i+1 i=i+1 i=i+1 i=i+1 Loop While i=10 Loop While i=10 Loop While i=10 Loop While i=10n n当当当当i
46、=10i=10i=10i10 Do Until i10 Do Until i10 Do Until i10 s=s+i s=s+i s=s+i s=s+i i=i+1 i=i+1 i=i+1 i=i+1 Loop Loop Loop Loop n n当当当当i10i10i10i10成立时,结束执行循环体成立时,结束执行循环体成立时,结束执行循环体成立时,结束执行循环体n n循环变量循环变量循环变量循环变量i i i i必须有初值必须有初值必须有初值必须有初值n n防止产生死循环防止产生死循环防止产生死循环防止产生死循环n n有可能一次也不执行循环体有可能一次也不执行循环体有可能一次也不执行循环
47、体有可能一次也不执行循环体修改循环控制变修改循环控制变量,改变加数值量,改变加数值第84页/共108页Do Do Do Do Loop Until Loop Until Loop Until Loop Until i=1i=1i=1i=1 Do Do Do Do s=s+i s=s+i s=s+i s=s+i i=i+1 i=i+1 i=i+1 i=i+1 Loop Until i10 Loop Until i10 Loop Until i10 Loop Until i10 当当当当i10i10i10i10成立时,结束执行循环体成立时,结束执行循环体成立时,结束执行循环体成立时,结束执行循环体
48、 循环变量循环变量循环变量循环变量i i i i必须有初值必须有初值必须有初值必须有初值 防止产生死循环防止产生死循环防止产生死循环防止产生死循环 至少执行一次循环体至少执行一次循环体至少执行一次循环体至少执行一次循环体修改循环控制变修改循环控制变量,改变加数值量,改变加数值第85页/共108页补充:补充:补充:补充:WhileWhileWhileWhileWendWendWendWend语句语句语句语句 格式如下:格式如下:While While WendWend 说明:说明:该语句的功能与该语句的功能与Do While Do While.Loop.Loop实现的循环完全相同。实现的循环完全
49、相同。第86页/共108页注意注意注意注意 三种循环语句:即三种循环语句:即三种循环语句:即三种循环语句:即For For For For、DoDoDoDoLoopLoopLoopLoop,共同的特点是重,共同的特点是重,共同的特点是重,共同的特点是重 复执行一个语句系列复执行一个语句系列复执行一个语句系列复执行一个语句系列(循环体循环体循环体循环体),不同点是控制重复次数,不同点是控制重复次数,不同点是控制重复次数,不同点是控制重复次数 的时机和方法不一样。的时机和方法不一样。的时机和方法不一样。的时机和方法不一样。第87页/共108页数组VBA程序流程控制VBA常用语句VBA编程基础VBA
50、概念数组第88页/共108页5-1 5-1 5-1 5-1 数组的概念数组的概念数组的概念数组的概念 数组:数组:数组不是一种数据类型,而是一组相同类型的变数组不是一种数据类型,而是一组相同类型的变 量的集合。可以像使用普通变量一样使用数组中的每一量的集合。可以像使用普通变量一样使用数组中的每一 个元素。个元素。使用数组的好处是用一个使用数组的好处是用一个 数组名数组名代表逻辑上相关的一代表逻辑上相关的一 批数据,用批数据,用下标下标表示该数组中的各个元素,可以提高处表示该数组中的各个元素,可以提高处 理数据的效率,缩短和简化程序。理数据的效率,缩短和简化程序。第89页/共108页5-2 5-