




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VBA基础(jīchǔ)(31-Oct-21)第一页,共108页。数组VBA程序流程控制(kòngzhì)VBA常用(chánɡyònɡ)语句VBA编程基础(jīchǔ)VBA概念VBA概念第二页,共108页。1-1VBA简介(jiǎnjiè)VBA(VisualBasicforApplication)是MicrosoftOffice系列软件的内置编程语言,其语法结构与VisualBasic编程语言互相兼容,采用的是面向对象的编程机制(jīzhì)和可视化的编程环境。第三页,共108页。1-2面向对象程序设计(chénɡxùshèjì)的基本概念1.集合和对象VBA中的应用程序是由许多对象组成的,如表、窗体、查询等。对象是帮助构造应用程序的元素,以特定的方式组织这些(zhèxiē)对象,就形成了应用程序。2.对象的属性、事件和方法属性属性描述了对象的自身(zìshēn)性质其格式为:对象名.属性=属性值第四页,共108页。1-2面向对象程序设计(chénɡxùshèjì)的基本概念事件事件是指可以发生在一个(yīɡè)对象上且能够被该对象所识别的动作。如:单击某个命令按钮就产生该按钮的“单击”事件当某个对象发生某一事件后,就会驱动系统去执行预先编好的、与这一事件相对应的一段程序。方法方法是系统事先设计好的,可以完成一定操作的特殊过程,是附属(fùshǔ)于对象的行为和动作。在需要使用的时候可以直接调用。其格式为: 对象名.方法名第五页,共108页。常见(chánɡjiàn)对象及其含义对象名含义Application代表整个Excel应用程序Window代表窗口Worksheet代表一个工作表Sheets指定的或活动工作薄中所有工作表的集合ShapeRange代表形状区域,它是文档中的一组形状PivotTable代表工作表上的数据透视图Workbook代表一个Excel工作薄Shape代表绘图层中的对象,例如自选图形Range代表某一单元格、某一行、某一列、某一区域Name代表单元格区域的自定义名Chart代表工作薄中的图表FileDialog提示文件对话框,功能和应用程序中标准“打开”和“保存”对话框类似CommandBarPopup代表命令栏上的一个弹出式控件CommandBar代表容器应用程序中的一个命令栏第六页,共108页。1-3VBA编程环境(huánjìng)VBA中的程序与函数共有4种:一般程序(Sub)、事件(shìjiàn)程序(Event)、属性程序(Property)和函数(Function)VBA程序窗口共6种:代码窗口、立即窗口、本地窗口、监视窗口、工程资源管理器和属性窗口在VBE环境中编写VBA代码第七页,共108页。工程(gōngchéng)窗口-选择对象属性(shǔxìng)窗口-选择对象的属性(shǔxìng)代码(dàimǎ)窗口选择事件VBE编程环境第八页,共108页。标准(biāozhǔn)工具条视图MicrosoftExcel按钮:切换Excel窗口(chuāngkǒu)插入按钮:插入模块或过程运行子过程/用户窗体按钮:运行模块中的程序中断按钮:中断正在运行的程序重新设置按钮:结束正在运行的程序设置模式按钮:在设计模式和非设计模式之间切换工程资源管理器按钮:用于打开工程资源管理器属性窗口(chuāngkǒu)按钮:用于打开属性窗口(chuāngkǒu)对象浏览器按钮:用于打开对象浏览器Microsoft
Excel插入(chārù)模块运行子过程/用户窗体设计模式中断重新设计工程资源管理器对象浏览器属性窗口第九页,共108页。新建一个窗体并添加两个命令(mìnglìng)按钮,运行窗体后,单击第一个按钮,显示一个消息框;单击第二个按钮,退出当前窗体通过此例,体会可视化编程、面向对象、事件(shìjiàn)过程、应用方法等基本概念。第十页,共108页。数组VBA程序流程控制(kòngzhì)VBA常用(chánɡyònɡ)语句VBA编程基础(jīchǔ)VBA概念VBA编程基础第十一页,共108页。2-1常量(chángliàng)、变量VBA使用常量(chángliàng)、变量来存储值。用来保存在程序运行期间数据。常量(chángliàng):在程序运行中其存储的值不会改变。变量:在程序运行中其值可以改变。第十二页,共108页。2-1-1常量(chángliàng)在程序运行过程中,其值不会被改变的量称为常量。在VBA中有三类(sānlèi)常量:1.直接常量如:10,20%,123.0,“AB”,“VBA程序设计”等2.符号常量3.系统常量指VBA系统预先定义好的,用户可以直接引用的量。如:acForm,acQuery,vbOk,vbRed第十三页,共108页。符号(fúhào)常量在程序中,某个常量多次被使用,则可以使用一个符号来代替该常量,这样不仅在书写上方便,而且有效地改进(gǎijìn)了程序的可读性和可维护性。VBA中使用关键字Const声明符号常量。其格式如下:Const常量名[类型符号]=常数表达式如:ConstPI#=3.1415926第十四页,共108页。2-1-2变量(biànliàng)变量(biànliàng)是内存中的临时单元,存放在程序执行过程中产生的中间结果和最后输出结果。在程序中使用变量(biànliàng),就要给变量(biànliàng)定义名称及类型,即对变量(biànliàng)进行声明。第十五页,共108页。变量(biànliàng)命名规则1.变量名必须以字母或汉字开头,后可跟字母、汉字、数字或下划线组成(不能含有(hányǒu)小数点和空格),长度不超过255个字符的字符串;2.不能使用VBA中的关键字;3.VBA中不区分变量名的大小写;4.变量名的最后一个字符可以是%、&、!、#、$等表示数据类型的声明符。说明:常量名的命名规则与变量名的命名规则相同第十六页,共108页。2-2数据类型与变量(biànliàng)的声明在VBA中,数据类型用来决定变量可以保存何种数据。VBA支持多种数据类型,为用户编程提供(tígōng)了方便。第十七页,共108页。2-2-1VBA的数据类型数据类型类型声明符存储空间取值范围整型(Integer)%2-32768~32767长整型(Long)&4-2147483648~2147483647单精度浮点型(Single)!4负数:-3.402823E38~-1.401298E-45正数:1.401298E-45~3.402823E38双精度浮点型(Double)#8负数:-1.79769313486232E308~-4.94065645841247E-324正数:4.94065645841247E-324~1.79769313486232E308货币型(Currency)@8-922337203685477.5808~922337203685477.5807日期型(Date)8100年1月1日~9999年12月31日字符型(String)$0字符~65400个字符字节型(Byte)10~255逻辑型(Boolean)2True或False对象型(Object)4任何引用的对象变体型(Variant)第十八页,共108页。2-2-2变量(biànliàng)声明用Dim或Static语句显式声明局部变量格式:Dim变量名[AS类型]或Dim变量名类型符语句中的“As类型”子句是可选的。如果使用该子句,就可以定义变量的数据类型。未使用,默认变量的类型为变体型(Variant)。例如:DimiAsinteger,s表示(biǎoshì)声明了一个名为i的整型变量和一个名为s的变体型变量。第十九页,共108页。关键字Dim或Static的区别(qūbié)Dim声明:随过程的调用而分配存贮单元(dānyuán),每次调用都对变量初始化;过程体结束,变量的内容自动消失,存储单元(dānyuán)释放。Static声明:Static声明的变量,也称为静态变量。静态变量在程序运行过程中一直保留其值,即每次调用过程,变量保持原来的值。第二十页,共108页。数据类型的转换(zhuǎnhuàn)函数列表函数返回类型CByteByteCBoolBooleanCIntIntegerCLngLong(长整型)CSngSingle(单精度浮点型)CDblDouble(双精度浮点型)CCurCurrency(变比整数)CDecDecimalCDateDateCStrStringCvarVariant第二十一页,共108页。识别(shíbié)数据类型的函数TypeNameSubabc()DimiAsIntegerDimstrAsStringi=10MsgBoxTypeName(i)str=CStr(i)MsgBoxTypeName(str)EndSub第二十二页,共108页。隐式声明(shēngmíng)变量未进行上述的声明而直接使用变量(biànliàng),称变量(biànliàng)的隐式声明,采用隐式声明的变量(biànliàng)都是变体型(Variant)。
注意:VBA中允许不事先声明而直接使用变量(biànliàng),可以通过语句OptionExplicit,来要求所使用的变量(biànliàng)必须事先声明,否则VBA会发出警告信息。第二十三页,共108页。变量a,b,Sum都没有(méiyǒu)事先定义PrivateSubForm_Click()Sum=0a=10b=20Sum=a+bDebug.Print"Sum="&SumEndSub良好的编程习惯应该是“先声明变量,后使用(shǐyòng)变量”,这样做可以提高程序的效率,同时也使程序易于调试。VBA中可以强制显式声明,可以在窗体模块、标准模块和类模块的通用声明段中加入语句:OptionExplicit第二十四页,共108页。变量(biànliàng)的初始化声明(shēngmíng)而未赋值的变量的值为:数值型变量初始化为0;字符型变量为零长度字符串;变体型变量初始化为Empty;第二十五页,共108页。2-3-1算术(suànshù)运算符第二十六页,共108页。2-3-2连接(liánjiē)运算符连接(liánjiē)运算符:&、+(字符串连接(liánjiē))例如:"123"+"456"结果"123456""123"&"456"结果"123456"使用上&与+的区别:例如:"abcdef"&12345结果为"abcdef12345" "123"&456结果为"123456" "abcdef"+12345结果为出错"123"+456结果为579
第二十七页,共108页。2-3-3关系(guānxì)运算符将两个操作数进行大小比较,结果(jiēguǒ)为逻辑值。注意:字符串比较,则按字符的ASCII码值从左到右一一比较,直到出现不同的字符为止。第二十八页,共108页。2-3-4逻辑(luójí)运算符将操作数进行(jìnxíng)逻辑运算,结果是逻辑值第二十九页,共108页。举例(jǔlì)例1:用人单位招聘秘书:年龄小于40岁的女性,学历(xuélì)专科或本科正确(zhèngquè)的VBA表达式:3〈=xAndx<=7错误的VBA表达式:3<=x<=7或3<=xOrx<=7
年龄<40,性别=“女”,(学历=“专科”,学历=“本科”)
AndAndOr例2:算术表达式:第三十页,共108页。2-3-5简单(jiǎndān)的字符处理函数作用关键字OptionCompare设置字符串比较规则StrComp比较两个字符串StrConv字符串类型转换Lcase、Ucase大小写变换Space、String重复字符串Len计算字符串长度Format设置字符格式Lset、Rset重排字符串InStr、Left、Ltrim、Mid、RightRtrim、Trim处理字符串Split、Join拆分与连接字符串第三十一页,共108页。OptionCompare设置(shèzhì)字符串比较规则OptionCompare{Binary|Text|Database}OptionCompareBinary:是根据字符的内部二进制表示导出的一种排序(páixù)A-Z<a-z<汉字OptionCompareText:是根据系统区域确定的一种不区分大小写的一种排序(páixù)(A=a)<(B=b)<(Z=z)结果(jiēguǒ):True结果:False第三十二页,共108页。StrComp比较(bǐjiào)两个字符串第三十三页,共108页。StrConv字符串类型转换常量说明vbUpperCase将字符串文字转成大写vbLowerCase将字符串文字转成小写vbProperCase将字符串中每个字的开头字母转成大写vbWide将字符串中单字节字符转成双字节字符vbNarro将字符串中双字节字符转成单字节字符vbKatakana将字符串中平假名字符转成片假名字符vbHiragana将字符串中片假名字符转成平假名字符vbUnicode根据系统的默认码页将字符串转成UnicodevbFromUnicode将字符串由Unicode转成系统的默认码页第三十四页,共108页。StrConv字符串类型转换(例)MsgBoxstrConv("English",vbUpperCase)&Chr(10)&strConv("English",vbLowerCase)&Chr(10)&strConv("english",vbProperCase)&Chr(10)&strConv("English",vbWide)第三十五页,共108页。Format格式化字符串MsgBoxFORMAT(Date,"yyyy年m月d日")&Chr(10)&FORMAT(Date,"aaaa"),vbaOKOnly,"现在(xiànzài)是"第三十六页,共108页。LCase/UCase大小写转换(zhuǎnhuàn)Sub大小写转换(zhuǎnhuàn)()MsgBoxLCase("HELLOWORLD")&Chr(10)&UCase("helloworld")EndSub第三十七页,共108页。String/Space重复(chóngfù)字符Sub重复(chóngfù)字符()MsgBoxString(5,"$")&Space(3)&String(5,"*")EndSub第三十八页,共108页。Lset/Rset字符串往左/右对齐(duìqí)Sub字符左右对齐(duìqí)()Dimstr1,str2AsStringstr1="大连华信计算机技术股份有限公司"LSetstr1="华信培训"str2="大连华信计算机技术股份有限公司"RSetstr2="华信培训"MsgBox"["&str1&"]"&Chr(10)&"["&str2&"]"EndSub第三十九页,共108页。Instr返回字符(zìfú)出现位置Sub查找位置(wèizhi)()MsgBoxInStr("大连华信计算机技术股份有限公司","信")EndSub第四十页,共108页。Left/Mid/Right从左、中、右取值Sub取值()DimstrAsStringstr="大连华信计算机技术股份(gǔfèn)有限公司"MsgBoxLeft(str,2)&Mid(str,3,2)&Right(str,2)EndSub第四十一页,共108页。LTrim/RTrim/Trim去除(qùchú)空格Subabc()Dimstr1,str2AsStringstr1="大连"str2="华信"'MsgBoxTrim(str1&str2)&"666"MsgBoxLTrim(str1)&RTrim(str2)&"666"EndSub第四十二页,共108页。Like字符串相似(xiānɡsì)度比较Subabc()'result=stringlikpattern'?任何单一字符'*零个或多个(duōɡè)字符'#任何一个数字(0-9)Dimstr1AsStringstr1="abda"Ifstr1Like"*"ThenMsgBox"*相似"Ifstr1Like"a???"ThenMsgBox"?相似"If1234Like"####"ThenMsgBox"#相似"EndSub第四十三页,共108页。2-4表达式组成由变量、常量、函数(hánshù)等运算对象加上运算符、圆括号组成的式子。书写规则(1)运算符不能相邻。例a+-b是错误的。(2)乘号不能省略。例x乘以y应写成:x*y。(3)括号必须成对出现,均使用圆括号。(4)表达式从左到右在同一基准上书写,无高低。运算优先级算术运算符>连接运算符>关系运算符>逻辑运算第四十四页,共108页。2-5常用(chánɡyònɡ)函数函数实际上是系统事先定义好的内部程序,用来(yònɡlái)完成特定的功能。VBA提供了大量的内部函数,供用户在编程时使用。函数的调用形式为:函数名(参数表)常用内部函数 常用内部函数,在立即窗口练习,体会函数的功能。[请参照:VBA函数参考手册]第四十五页,共108页。2-6模块(mókuài)、函数和过程模块是自定义的过程、函数保存的地方(dìfāng),也是录制的宏保存的场所。有两种基本类型的模块:类模块和标准模块。模块可以通过右键单击工程资源管理器的工程名,选择“插入-模块”来新建。新建的模块缺省的名称为“模块1”,“模块2”,建议在属性窗口内更改为有意义的名称。模块任务:(1)保存(bǎocún)过程和函数;(2)定义模块内的私有变量或整个工程的公有变量。第四十六页,共108页。2-7过程(guòchéng)过程是最基本的运行单位语法(yǔfǎ)[Private|Public|Friend][Static]Subname[(arglist)]
[statements]
[ExitSub]
[statements]EndSub在以上程序中,Sub代表过程种类,表示运行指定的操作,但不返回运行结果;第四十七页,共108页。部分(bùfen) 描述Public可选的。表示所有模块的所有其它过程都可访问这个Sub过程。如果在包含OptionPrivate的模块中使用,则这个过程在该工程外是不可使用的。Private可选的。表示只有在包含其声明的模块中的其它过程可以访问该Sub过程。Friend可选的。只能在类模块中使用。表示该Sub过程在整个工程中都是可见的,但对对象实例的控制者是不可见的。Static可选的。表示在调用之间保留Sub过程的局部变量的值。Static属性对在Sub外声明的变量不会产生影响,即使过程中也使用了这些变量。name必需的。Sub的名称;遵循标准的变量命名约定。arglist可选的。代表在调用时要传递给Sub过程的参数的变量列表。多个变量则用逗号隔开。statements可选的。Sub过程中所执行的任何语句组。第四十八页,共108页。2-8函数(hánshù)函数是具有(jùyǒu)返回值的过程语法[Public|Private|Friend][Static]Functionname[(arglist)][Astype][statements][name=expression][ExitFunction][statements][name=expression]EndFunction第四十九页,共108页。部分(bùfen) 描述Public可选的。表示所有模块的所有其它过程都可访问这个Function过程。如果是在包含OptionPrivate的模块中使用,则这个过程在该工程外是不可使用。Private可选的。表示只有包含其声明的模块的其它过程可以访问该Function过程。Friend可选的。只能在类模块中使用。表示该Function过程在整个工程中都是可见的,但对于对象实例的控制者是不可见的。Static可选的。表示在调用之间将保留Function过程的局部变量值。Static属性对在该Function外声明的变量不会产生影响,即使过程中也使用了这些变量。name必需的。Function的名称;遵循标准的变量命名约定。arglist可选的。代表在调用时要传递给Function过程的参数变量列表。多个变量应用逗号隔开。type可选的。Function过程的返回值的数据类型,可以是Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(除定长)、Object、Variant或任何用户定义类型。statements可选的。在Function过程中执行的任何语句组。expression可选的。Function的返回值。第五十页,共108页。函数和过程(guòchéng)区别调用一个过程(Sub)时,必须键入过程名称以及任何需要的参数值。Call语句可有可无,如果使用它,则参数必须以括号括起来。调用函数(Function)时,为了使用函数的返回值,必须指定函数给变量,并且(bìngqiě)用括号将参数封闭起来。第五十一页,共108页。数组VBA程序流程控制(kòngzhì)VBA常用(chánɡyònɡ)语句VBA编程基础(jīchǔ)VBA概念VBA常用语句第五十二页,共108页。3-1VBA语句(yǔjù)书写规则VBA代码不区分字母的大小写系统保留字自动转换每个单词的首字母大写;语句书写自由一行(yīxíng)可书写几句语句,之间用冒号(:)分隔;一句语句可分若干行书写,用续行符(_)将语句分开。第五十三页,共108页。3-2VBA常用(chánɡyònɡ)语句赋值语句:给变量、常量或对象的属性指定一个值或表达式。格式:变量名=表达式作用:将表达式的值赋值给变量名。一般用于给变量赋值或对控件设定属性值。例如:s=10Text1.Text="欢迎使用VBA"注意:虽然赋值号与关系运算符等于号都用“=”表示,VBA会根据(gēnjù)所处的位置自动判断是何种意义的符号第五十四页,共108页。声明语句:命名和定义常量、变量、数组以及过程(guòchéng)。注释语句在程序中的适当位置加上注释语句有利于程序的维护和阅读。格式:Rem注释内容 或用单引号’注释内容第五十五页,共108页。数组VBA程序流程控制(kòngzhì)VBA常用(chánɡyònɡ)语句VBA编程基础(jīchǔ)VBA概念VBA程序流程控制第五十六页,共108页。顺序、分支(fēnzhī)、循环结构(jiégòu)化程序设计由顺序、分支、循环这3种基本结构(jiégòu)所组成。语句组2语句组1TF语句组2条件语句组1FT条件语句组TF条件语句组第五十七页,共108页。4-1分支(fēnzhī)结构单行If语句格式:If表达式Then语句1[Else语句2]功能:If测试指定的条件,如果条件表达式为真(True),则执行Then后面的语句1,否则(fǒuzé)执行语句2(若Else子句未省略)。TF语句2条件语句1TF条件语句1第五十八页,共108页。PrivateSubp1()DimxAsInteger,yAsIntegerx=InputBox(“请输入(shūrù)x值”)Ifx>=0Theny=2*x+1Elsey=1MsgBox"y:"&yEndSub根据输入x的值,观察y的输出(shūchū)结果单行If语句(yǔjù)举例第五十九页,共108页。
多行If语句(yǔjù)语句组可以由一条(yītiáo)或多条语句组成,语句组不能与Then书写在同一行,否则VBA认为是一个单行If语句,会导致Else没有匹配的If。语句“EndIf”是多行If语句的结束标志。在多行If语句中,即使省略Else子句,也要写该结束标志。省略Else子句时的多行If语句形式为:If表达式Then语句组 EndIf第六十页,共108页。例:计算分段(fēnduàn)函数单行(dānxínɡ)If语句实现:Ifx=0Theny=cos(x)-x^3+3*xIfx<>0Theny=sin(x)+sqr(x*x+1)多行If语句(yǔjù)实现:Ifx<>0Theny=sin(x)+sqr(x*x+1)Elsey=cos(x)-x^3+3*xEndIf第六十一页,共108页。If语句(yǔjù)的嵌套If语句的嵌套是指If或Else后面(hòumian)的语句块中又包含If语句。If<表达式1>ThenIf<表达式11>Then…EndIf…EndIf第六十二页,共108页。例:已知x,y,z三个数,使得(shǐde)x>y>z用一个IF语句和一个嵌套的IF语句实现Ifx<yThent=x:x=y:y=t
Ify<zThent=y:y=z:z=t
Ifx<yThent=x:x=y:y=tEndIf
EndIfIf语句(yǔjù)的嵌套注意事项:书写锯齿型;If与EndIf配对第六十三页,共108页。If<表达式1>Then <语句(yǔjù)块1>ElseIf<表达式2>Then <语句(yǔjù)块2> … [Else语句(yǔjù)块n+1]EndIfIf…Then…ElseIf语句(多分支(fēnzhī)结构)第六十四页,共108页。说明(shuōmíng)不管有几个分支,依次判断,当某条件满足,执行相应(xiāngyīng)的语句,其余分支不再执行;若条件都不满足,且有Else子句,则执行该语句块,否则什么也不执行。ElseIf不能写成ElseIf。第六十五页,共108页。例:已知百分制成绩mark,显示对应的五级制成绩下列三种方法(fāngfǎ)哪些正确,哪些错误?方法一Ifmark>=90ThenPrint"优"ElseIfmark>=80ThenPrint"良"ElseIfmark>=70ThenPrint"中"ElseIfmark>=60ThenPrint"及格"ElsePrint"不及格"EndIf方法二Ifmark<60ThenPrint"不及格"ElseIfmark<70ThenPrint"及格"ElseIfmark<80ThenPrint"中"ElseIfmark<90ThenPrint"良"ElsePrint"优"EndIf方法三Ifmark>=60ThenPrint"及格"ElseIfmark>=70ThenPrint"中"ElseIfmark>=80ThenPrint"良"ElseIfmark>=90ThenPrint"优"ElsePrint"不及格"EndIf第六十六页,共108页。<表达式列表>:与<变量或表达式>同类型的下面四种(sìzhǒnɡ)形式之一:表达式例:"A"一组枚举表达式(用逗号分隔)2,4,6,8表达式1To表达式2 60To100 Is关系运算符表达式 Is<60语句(yǔjù)格式: SelectCase变量或表达式 Case表达式列表1 语句(yǔjù)块1 Case表达式列表2 语句(yǔjù)块2 … [CaseElse 语句(yǔjù)块n+1] EndSelect数值(shùzí)型或字符串表达式SelectCase语句(情况语句)第六十七页,共108页。程序(chéngxù)流程图语句块n+1语句块1语句块2语句块n条件2TF…...条件nTF条件1TF第六十八页,共108页。变量strC中存放一个字符,判断(pànduàn)该字符类型第六十九页,共108页。例如:在输入成绩文本框中输入一个分数,单击“判断(pànduàn)”命令按钮后,在成绩等级文本框中显示对应的成绩等级。输入的成绩在90~100分为A,80~89分为B,70~79分为C,60~69分为D,0~59分为E,否则显示出错信息。注意:根据题意,当输入的成绩不在[0,100]内时,应显示出错信息,在该范围内时,应进行分等级。判断是否(shìfǒu)为合法成绩可用If语句,而分等级最好使用SelectCase语句。第七十页,共108页。条件(tiáojiàn)函数IIf函数形式为:IIf(表达式,当表达式为True时的值,当表达式为False时的值)例如:求x,y中大(zhōnɡdà)的数,放入max变量中。 max=IIf(x>y,x,y)第七十一页,共108页。循环(xúnhuán)结构For…Next循环(xúnhuán)Do…Loop循环(xúnhuán)第七十二页,共108页。For…Next循环(xúnhuán)语句For…Next循环结构:将一段程序重复(chóngfù)执行指定的次数,其中使用一个计数变量,统计执行的次数。格式:For循环变量=初值to终值[Step步长]语句块 [ExitFor] 语句块Next[循环变量]循环体第七十三页,共108页。循环变量得初值循环变量<=终值ExitFor语句块循环变量加步长结束False语句块True第七十四页,共108页。注意(zhùyì)功能:执行For语句(yǔjù)时,“循环变量”设为“初值”;执行到Next语句(yǔjù)时,步长加(减)到循环变量上;再执行For语句时,若“循环变量”超过“终值”则循环结束。步长:未指定值时默认为1。若“步长”是正数或0,则“初值”应大于等于“终值”,否则,“初值”应小于等于“终值”。第七十五页,共108页。例:计算累加程序(chéngxù)S=1+2+3+4….+x,并输出结果方法:接收一个累加的终值,确定一个循环变量,循环变量有2个作用(加数和循环变量),确定一个存储(cúnchǔ)累加和的变量。使用循环计算,最后输出显示结果。DimsAsinteger,xAsintegerx=InputBox("请输入累加的终值")Fori=lToxs=s+iNext思考:计算=1+3+5+7…X或2+4+6+8…X如何编写?第七十六页,共108页。例:计算(jìsuàn)累乘程序S=1*2*3*4…X方法:接收一个累乘的终值,确定一个循环变量,循环变量有2个作用(乘数和循环变量),确定一个存储累乘积的变量。使用(shǐyòng)循环计算,最后输出显示结果。DimSAsinteger,iAsintegerx=InputBox("请输入累加的终值")S=1Fori=lToxS=S*iNext注意:累乘的乘数和乘积变量的初值为1。第七十七页,共108页。注意:出了循环,循环控制变量值的问题。例程序段:Fori=2To13Step3循环执行(zhíxíng)次数debug.Printi 输出i的值分别为:25811Nextidebug.Printi出了循环输出为:i=14第七十八页,共108页。例:改变循环(xúnhuán)控制变量对循环(xúnhuán)的影响PrivateSubCommand1_Click()j=0Fori=1To20Step2i=i+3j=j+1Print"第";j;"次循环i=";iNextiPrint"退出(tuìchū)循环后i=";iEndSub正常情况:i=1,3,5,7,9,11,13,15,17,19现在:i=4,9,14,19第七十九页,共108页。Do…Loop循环(xúnhuán)语句形式1:Do{While|Until}<条件(tiáojiàn)>语句块[ExitDo语句块]Loop第八十页,共108页。形式2:Do语句(yǔjù)块[ExitDo语句(yǔjù)块]Loop{While|Until}<条件>Do…Loop循环(xúnhuán)语句第八十一页,共108页。Do…Loop语句(循环(xúnhuán)结构)DoWhile…Loop语句(yǔjù)DoUntil…Loop语句(yǔjù)Do…LoopWhile语句(yǔjù)Do…LoopUntil语句(yǔjù)第八十二页,共108页。DoWhile…Loop语句(yǔjù)i=1DoWhilei<=10s=s+ii=i+1Loop当i<=10成立(chénglì)时,执行循环体循环变量i必须有初值防止产生死循环有可能一次也不执行循环体修改循环(xúnhuán)控制变量,改变加数值第八十三页,共108页。
Do…LoopWhilei=1Dos=s+ii=i+1LoopWhilei<=10当i<=10成立(chénglì)时,执行循环体循环变量i必须有初值防止产生死循环至少执行一次循环体修改循环控制变量,改变(gǎibiàn)加数值第八十四页,共108页。DoUntil…Loopi=1DoUntili>10s=s+ii=i+1Loop当i>10成立时,结束执行循环(xúnhuán)体循环(xúnhuán)变量i必须有初值防止产生死循环(xúnhuán)有可能一次也不执行循环(xúnhuán)体修改(xiūgǎi)循环控制变量,改变加数值第八十五页,共108页。Do…LoopUntili=1Dos=s+ii=i+1LoopUntili>10当i>10成立时,结束执行循环体循环变量i必须有初值防止(fángzhǐ)产生死循环至少执行一次循环体修改(xiūgǎi)循环控制变量,改变加数值第八十六页,共108页。补充(bǔchōng):While…Wend语句格式如下: While<条件> <循环块> Wend说明:该语句(yǔjù)的功能与DoWhile<条件>….Loop实现的循环完全相同。第八十七页,共108页。注意(zhùyì)三种循环(xúnhuán)语句:即For、Do—Loop,共同的特点是重复执行一个语句系列(循环(xúnhuán)体),不同点是控制重复次数的时机和方法不一样。第八十八页,共108页。数组VBA程序流程控制(kòngzhì)VBA常用(chánɡyònɡ)语句VBA编程基础(jīchǔ)VBA概念数组第八十九页,共108页。5-1数组的概念(gàiniàn)数组:数组不是一种数据类型,而是一组相同(xiānɡtónɡ)类型的变量的集合。可以像使用普通变量一样使用数组中的每一个元素。使用数组的好处是用一个数组名代表逻辑上相关的一批数据,用下标表示该数组中的各个元素,可以提高处理数据的效率,缩短和简化程序。第九十页,共108页。5-2数组的定义(dìngyì)数组不是一种数据类型,而是一组相同类型的变量的集合(jíhé),数组必须先声明后使用。两类数组:静态(定长)数组、动态(可变长)数组1.一维数组定义一维数组的形式:Dim数组名([下界To]上界)[As类型]声明了数组的名、维数、大小、类型第九十一页,共108页。说明(shuōmíng):数组名的命名规则与变量的命名相同。数组的元素个数:上界-下界+1。缺省<下界>为0,若希望下标从1开始,可在模块的通用部分使用(shǐyòng)OptionBase语句将设为1。其使用(shǐyòng)格式是:OptionBase0|1'后面的参数只能取0或1例如:OptionBase1'将数组声明中缺省<下界>下标设为1<下界>和<上界>不能使用(shǐyòng)变量,必须是常量,常量可以是直接常量、符号常量,一般是整型常量。第九十二页,共108页。例:Dimmark(1to100)AsInteger例:Dima(-1to3)AsInteger声明(shēngmíng)一维数组a,包含了5个整型元素a(-1)、a(0)、a(1)、a(2)、a(3);如果省略As子句,则数组的类型为变体类型。数组中各元素在内存占一片连续的存储空间,一维数组在内存中存放的顺序是按下标(xiàbiāo)大小的顺序。第九十三页,共108页。注意(zhùyì):在定义静态数组时,每一维的元素个数必须是常数,不能是变量或表达式。如:错误的声明,下标(xiàbiāo)是变量Dimx(n)或:n=Inputbox(“输入n”)Dimx(n)AsSingle第九十四页,共108页。在数组声明(shēngmíng)中的下标说明了数组的整体,即每维的大小;而在程序其他地方出现的下标表示数组中的一个元素。两者写法形式相同,但意义不同。例如:Dimx(10)AsInteger
x(10)=100
表示(biǎoshì)声明了数组x,有11个数组元素对x(10)这个(zhège)数组元素赋值第九十五页,共108页。5-3
二维数组定义二维数组的形式:Dim数组名([下界1To]上界1,下界2To]上界2)As类型例如(lìrú):Dima(2,3)AsSingle二维数组在内存的存放顺序是“先行后列”。数组a的各元素在内存中的存放顺序是: a(0,0)→a(0,1)→a(0,2)→a(0,3) a(1,0)→a(1,1)→a(1,2)→a(1,3) a(2,0)→a(2,1)→a(2,2)→a(2,3)第九十六页,共108页。例:DimlArray(0To3,0To4)AsLong
共有4×5个元素(yuánsù)等价于:DimlArray(3,4)AsLong第九十七页,共108页。5-4动态(dòngtài)数组动态数组指在声明数组时未给出数组的大小(省略括号中的下标),当要使用它时,随时用ReDim语句重新指出数组大小。形式(xíngshì)如下: ReDim数组名(下标[,下标2…])[As类型]例:PrivateSubS1()Dimx()AsSingle …n=Inputbox(“输入n”)ReDim
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全管理员安全培训考试题带答案(模拟题)
- 感染SARS-CoV-2的K18-hACE2小鼠大脑皮层的蛋白质组、泛素化组和乙酰化组的整体分析
- 基于准各向同性股线的CICC导体的机械特性的研究
- CR200J动力集中动车组自动驾驶方案研究与算法设计
- 粤港澳大湾区数字阅读服务现状与改进建议
- 教师心理健康教育计划
- 八年级道法与社会责任教育计划
- 2025年盐酸多西环素微丸胶囊项目可行性研究报告
- 2025年白葡萄汁项目可行性研究报告
- 2025年电熔90℃弯头项目可行性研究报告
- WebRTC音视频实时互动技术:原理、实战与源码分析
- 维也纳国际酒店-绩效考核管理制度
- Unit 2 Morals and Virtues Reading and Thinking (I)示范课教案【英语人教必修第三册】
- 2023年山东专升本计算机真题及答案
- 原始人的创造ppt
- 污水处理设备供货安装技术服务方案
- 高尔基《海燕》 课件完整版
- 能源计量网络图范例电力计量网络图
- 220KV升压站预防性试验
- 建筑施工现场标准化管理手册范本
- 柴油机结构原理
评论
0/150
提交评论