资源描述
第8章VBAVBA编程入门编程入门第第8章章VBA编程入门编程入门内容提要内容提要8-1 VBA8-1 VBA概念概念8-2 VBA8-2 VBA编程基础编程基础 8-3 VBA8-3 VBA常用语句常用语句8-4 VBA8-4 VBA程序流程控制程序流程控制8-5 8-5 数组数组8-6 VBA8-6 VBA与宏与宏8-7 8-7 小结及练习小结及练习内容提要内容提要8-1 VBA概念概念VBA(Visual Basic for Application)VBA(Visual Basic for Application)是是Microsoft OfficeMicrosoft Office系列软件的内置编系列软件的内置编程语言,其语法结构与程语言,其语法结构与Visual BasicVisual Basic编编程语言互相兼容,采用的是面向对象的程语言互相兼容,采用的是面向对象的编程机制和可视化的编程环境。编程机制和可视化的编程环境。8-1 VBA8-1 VBA概述概述8-1-1 VBA8-1-1 VBA简介简介VBA(Visual Basic for Applicati1.1.集合和对象集合和对象vVBAVBA中的应用程序是由许多对象组成的,如中的应用程序是由许多对象组成的,如表、窗体、查询等。对象是帮助构造应用程序表、窗体、查询等。对象是帮助构造应用程序的元素,以特定的方式组织这些对象,就形成的元素,以特定的方式组织这些对象,就形成了应用程序。了应用程序。v数据库窗口把可供选择的对象排列在一起,数据库窗口把可供选择的对象排列在一起,形成不同的类。形成不同的类。8-1-2 8-1-2 面向对象程序设计的基本概念面向对象程序设计的基本概念 集合和对象集合和对象8-1-2 面向对象程序设计的基本概念面向对象程序设计的基本概念2.2.对象的属性、事件和方法对象的属性、事件和方法属性属性 属性描述了对象的自身性质。其格式为:属性描述了对象的自身性质。其格式为:对象名对象名.属性属性=属性值属性值事件事件 事件是指可以发生在一个对象上且能够被该对象所事件是指可以发生在一个对象上且能够被该对象所事件是指可以发生在一个对象上且能够被该对象所事件是指可以发生在一个对象上且能够被该对象所识别的动作。识别的动作。识别的动作。识别的动作。如:单击某个命令按钮就产生该按钮的如:单击某个命令按钮就产生该按钮的如:单击某个命令按钮就产生该按钮的如:单击某个命令按钮就产生该按钮的“单击单击单击单击”事事事事件件件件 当某个对象发生某一事件后,就会驱动系统去执行当某个对象发生某一事件后,就会驱动系统去执行当某个对象发生某一事件后,就会驱动系统去执行当某个对象发生某一事件后,就会驱动系统去执行预先编好的、与这一事件相对应的一段程序。预先编好的、与这一事件相对应的一段程序。预先编好的、与这一事件相对应的一段程序。预先编好的、与这一事件相对应的一段程序。对象的属性、事件和方法属性对象的属性、事件和方法属性方法方法 方法是系统事先设计好的,可以完成一定方法是系统事先设计好的,可以完成一定操作的特殊过程,是附属于对象的行为和动操作的特殊过程,是附属于对象的行为和动作。在需要使用的时候可以直接调用。作。在需要使用的时候可以直接调用。其调用格式为:其调用格式为:对象名对象名.方法名方法名方法方法 AccessAccess中除数据库的中除数据库的7 7个对象外,还提供个对象外,还提供一个重要的对象:一个重要的对象:DoCmdDoCmd对象对象 除窗体、控件的除窗体、控件的SetFocus(SetFocus(获得控制焦点获得控制焦点)方法外,用得最多得是方法外,用得最多得是 DoCmdDoCmd对象对象 的一些方的一些方法。使用这些方法,可以在法。使用这些方法,可以在VBAVBA中运行中运行AccessAccess的操作。的操作。Access中除数据库的中除数据库的7个对象外,还提供一个重要的对个对象外,还提供一个重要的对打开当前数据库中的打开当前数据库中的打开当前数据库中的打开当前数据库中的“雇员雇员雇员雇员”窗体窗体窗体窗体 DoCmd.OpenForm EmployeesDoCmd.OpenForm EmployeesDoCmd.OpenForm EmployeesDoCmd.OpenForm Employees 在数据库窗口中选择在数据库窗口中选择在数据库窗口中选择在数据库窗口中选择“雇员雇员雇员雇员”窗体窗体窗体窗体 DoCmd.SelectObject acForm,DoCmd.SelectObject acForm,DoCmd.SelectObject acForm,DoCmd.SelectObject acForm,EmployeesEmployeesEmployeesEmployees ,True,True,True,True在数据库窗口中关闭在数据库窗口中关闭在数据库窗口中关闭在数据库窗口中关闭“雇员雇员雇员雇员”窗体窗体窗体窗体 DoCmd.Close acForm,“Employees”,acSaveYesDoCmd.Close acForm,“Employees”,acSaveYesDoCmd.Close acForm,“Employees”,acSaveYesDoCmd.Close acForm,“Employees”,acSaveYes删除数据库中的删除数据库中的删除数据库中的删除数据库中的“雇员雇员雇员雇员”表表表表 DoCmd.DeleteObject EmployeesDoCmd.DeleteObject EmployeesDoCmd.DeleteObject EmployeesDoCmd.DeleteObject Employees DoCmd DoCmd 对象的常用方法(参照教材对象的常用方法(参照教材P190P190页)页)打开当前数据库中的打开当前数据库中的“雇员雇员”窗体窗体 DoCmd 对象的常用方法(对象的常用方法(例例8-1 8-1 新建一个窗体并添加两个命令按钮,新建一个窗体并添加两个命令按钮,运行窗体后,单击第一个按钮,新式一个消运行窗体后,单击第一个按钮,新式一个消息框;单击第二个按钮,退出当前窗体。息框;单击第二个按钮,退出当前窗体。(参照教材(参照教材P191P191页)页)通过此例,体会可视化编程、面向对象、通过此例,体会可视化编程、面向对象、事件过程、应用方法等基本概念。事件过程、应用方法等基本概念。例例8-1 新建一个窗体并添加两个命令按钮,运行窗体后,单击第新建一个窗体并添加两个命令按钮,运行窗体后,单击第进入进入VBEVBE编程环境编程环境VBEVBE窗口的组成窗口的组成 VBEVBE窗口由工具栏、工程资源管理器窗口、窗口由工具栏、工程资源管理器窗口、属性窗口、代码窗口和立即窗口组成。属性窗口、代码窗口和立即窗口组成。在在VBEVBE环境中编写环境中编写VBAVBA代码代码8-1-3 VBA8-1-3 VBA编程环境编程环境进入进入VBE编程环境编程环境8-1-3 VBA编程环境编程环境标准工具条标准工具条 视图视图视图视图Microsoft AccessMicrosoft AccessMicrosoft AccessMicrosoft Access按钮:切换按钮:切换按钮:切换按钮:切换Access 2000Access 2000Access 2000Access 2000窗口窗口窗口窗口 插入按钮:插入模块或过程插入按钮:插入模块或过程插入按钮:插入模块或过程插入按钮:插入模块或过程 运行子过程运行子过程运行子过程运行子过程/用户窗体按钮:运行模块中的程序用户窗体按钮:运行模块中的程序用户窗体按钮:运行模块中的程序用户窗体按钮:运行模块中的程序 中断按钮:中断正在运行的程序中断按钮:中断正在运行的程序中断按钮:中断正在运行的程序中断按钮:中断正在运行的程序 重新设置按钮:结束正在运行的程序重新设置按钮:结束正在运行的程序重新设置按钮:结束正在运行的程序重新设置按钮:结束正在运行的程序 设置模式按钮:在设计模式和非设计模式之间切换设置模式按钮:在设计模式和非设计模式之间切换设置模式按钮:在设计模式和非设计模式之间切换设置模式按钮:在设计模式和非设计模式之间切换 工程资源管理器按钮:用于打开工程资源管理器工程资源管理器按钮:用于打开工程资源管理器工程资源管理器按钮:用于打开工程资源管理器工程资源管理器按钮:用于打开工程资源管理器 属性窗口按钮:用于打开属性窗口属性窗口按钮:用于打开属性窗口属性窗口按钮:用于打开属性窗口属性窗口按钮:用于打开属性窗口 对象浏览器按钮:用于打开对象浏览器对象浏览器按钮:用于打开对象浏览器对象浏览器按钮:用于打开对象浏览器对象浏览器按钮:用于打开对象浏览器Microsoft Accsee插入模块运行子过程/用户窗体设计模式中断重新设计 工程资源管理器 对象浏览器属性窗口标准工具条标准工具条 视图视图Microsoft Access按钮:切换按钮:切换A工程窗口工程窗口选择对象选择对象属性窗口属性窗口选择对象选择对象的属性的属性代码代码窗口窗口选择选择事件事件VBEVBE编程环境编程环境工程窗口属性窗口代码窗口选择事件工程窗口属性窗口代码窗口选择事件VBE编程环境编程环境8-2-1 8-2-1 常量、变量常量、变量8-2 VBA8-2 VBA编程基础编程基础常量:在程序运行中其存储的值不会改变。常量:在程序运行中其存储的值不会改变。变量:在程序运行中其值可以改变。变量:在程序运行中其值可以改变。VBAVBA使用常量、变量来存储值。用来保存使用常量、变量来存储值。用来保存在程序运行期间数据。在程序运行期间数据。8-2-1 常量、变量常量、变量8-2 VBA编程基础常量:在程序运行编程基础常量:在程序运行常量常量 在程序运行过程中,其值在程序运行过程中,其值不会被改变不会被改变的的量称为常量。在量称为常量。在VBAVBA中有三类常量:中有三类常量:直接常量直接常量 如:如:如:如:10101010,20%20%20%20%,123.0123.0123.0123.0,“AB”AB”AB”AB”,“VBAVBAVBAVBA程序设程序设程序设程序设计计计计”等等等等 符号常量符号常量系统常量系统常量 指指指指VBAVBAVBAVBA系统预先定义好的,用户可以直接引用的量。系统预先定义好的,用户可以直接引用的量。系统预先定义好的,用户可以直接引用的量。系统预先定义好的,用户可以直接引用的量。如:如:如:如:acFormacFormacFormacForm,acQueryacQueryacQueryacQuery,vbOkvbOkvbOkvbOk,vbRedvbRedvbRedvbRed 常量常量符号常量符号常量 在程序中,某个常量多次被使用,则可以使在程序中,某个常量多次被使用,则可以使在程序中,某个常量多次被使用,则可以使在程序中,某个常量多次被使用,则可以使用一个符号来代替该常量,这样不仅在书写上方便,用一个符号来代替该常量,这样不仅在书写上方便,用一个符号来代替该常量,这样不仅在书写上方便,用一个符号来代替该常量,这样不仅在书写上方便,而且有效地改进了程序的可读性和可维护性。而且有效地改进了程序的可读性和可维护性。而且有效地改进了程序的可读性和可维护性。而且有效地改进了程序的可读性和可维护性。VBAVBAVBAVBA中使用关键字中使用关键字中使用关键字中使用关键字ConstConstConstConst 声明符号常量。声明符号常量。声明符号常量。声明符号常量。其格式如下:其格式如下:其格式如下:其格式如下:Const Const Const Const 常量名常量名常量名常量名 类型符号类型符号类型符号类型符号=常数表达式常数表达式常数表达式常数表达式如:如:如:如:Const Const PIPI#=3.1415926#=3.1415926符号常量符号常量 变量是内存中的临时单元,存放在程变量是内存中的临时单元,存放在程序执行序执行过程中产生的中间结果和最后输出结果。过程中产生的中间结果和最后输出结果。在程序中使用变量,就要给变量定义在程序中使用变量,就要给变量定义名称及类型,即对变量进行声明。名称及类型,即对变量进行声明。变量变量 变量是内存中的临时单元,存放在程序执行过程中产生的中变量是内存中的临时单元,存放在程序执行过程中产生的中 变量命名规则变量命名规则变量名必须以字母或汉字开头,后可跟字母、变量名必须以字母或汉字开头,后可跟字母、变量名必须以字母或汉字开头,后可跟字母、变量名必须以字母或汉字开头,后可跟字母、汉字、数字或下划线组成(不能含有小数点和空汉字、数字或下划线组成(不能含有小数点和空汉字、数字或下划线组成(不能含有小数点和空汉字、数字或下划线组成(不能含有小数点和空格),长度不超过格),长度不超过格),长度不超过格),长度不超过255255255255个字符的字符串;个字符的字符串;个字符的字符串;个字符的字符串;不能使用不能使用不能使用不能使用VBAVBAVBAVBA中的关键字;中的关键字;中的关键字;中的关键字;VBAVBAVBAVBA中不区分变量名的大小写;中不区分变量名的大小写;中不区分变量名的大小写;中不区分变量名的大小写;变量名的最后一个字符可以是变量名的最后一个字符可以是变量名的最后一个字符可以是变量名的最后一个字符可以是%、&、!、!、!、!、#、$等表示数据类型的声明符。等表示数据类型的声明符。等表示数据类型的声明符。等表示数据类型的声明符。说明:常量名的命名规则与变量名的命名规则相同说明:常量名的命名规则与变量名的命名规则相同说明:常量名的命名规则与变量名的命名规则相同说明:常量名的命名规则与变量名的命名规则相同 变量命名规则说明:常量名的命名规则与变量名的命名规则相同变量命名规则说明:常量名的命名规则与变量名的命名规则相同8-2-2 8-2-2 数据类型与变量的声明数据类型与变量的声明 在在VBAVBA中,数据类型用来决定变量中,数据类型用来决定变量可以保存何种数据。可以保存何种数据。VBAVBA支持多种数据支持多种数据类型,为用户编程提供了方便。类型,为用户编程提供了方便。参照教材参照教材P196P196页表页表8-1 VBA8-1 VBA的数据类型的数据类型8-2-2 数据类型与变量的声明数据类型与变量的声明 在在VBA中,数据类型中,数据类型 VBAVBA的数据类型的数据类型数据类型数据类型数据类型数据类型类型声明符类型声明符类型声明符类型声明符存储空间存储空间存储空间存储空间 取值范围取值范围取值范围取值范围整型(整型(整型(整型(IntegerInteger)%2 2-32768-327683276732767长整型(长整型(长整型(长整型(LongLong)&4 4-2147483648-214748364821474836472147483647单精度浮点型单精度浮点型单精度浮点型单精度浮点型(SingleSingle)!4 4负数:负数:负数:负数:-3.402823E38-3.402823E38-1.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)(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)(Object)4 4任何引用的对象任何引用的对象任何引用的对象任何引用的对象变体型变体型变体型变体型(Variant)(Variant)VBA的数据类型数据类型类型声明符存储空间的数据类型数据类型类型声明符存储空间 取取变量声明变量声明用用Dim|StaticDim|Static语句显式声明局部变量语句显式声明局部变量 格式:格式:Dim Dim 变量名变量名 AS AS 类型类型 或或 Dim Dim 变量名类型符变量名类型符 语句中的语句中的“As As 类型类型”子句是可选的。如果子句是可选的。如果使用该子句,就可以定义变量的数据类型。未使用该子句,就可以定义变量的数据类型。未使用,默认变量的类型为变体型(使用,默认变量的类型为变体型(VariantVariant)。)。例如:例如:例如:例如:Dim i As integer,sDim i As integer,sDim i As integer,sDim i As integer,s 表示声明了一个名为表示声明了一个名为表示声明了一个名为表示声明了一个名为i i i i的整型变量和一个名为的整型变量和一个名为的整型变量和一个名为的整型变量和一个名为s s s s的的的的变体型变量。变体型变量。变体型变量。变体型变量。变量声明变量声明关键字关键字DimDim或或StaticStatic的区别:的区别:Dim Dim 声明声明:随过程的调用而分配存贮单元,每次:随过程的调用而分配存贮单元,每次:随过程的调用而分配存贮单元,每次:随过程的调用而分配存贮单元,每次调用都对变量初始化;过程体结束,变量的内容自动调用都对变量初始化;过程体结束,变量的内容自动调用都对变量初始化;过程体结束,变量的内容自动调用都对变量初始化;过程体结束,变量的内容自动消失,存储单元释放。消失,存储单元释放。消失,存储单元释放。消失,存储单元释放。Static Static 声明声明:Static Static Static Static 声明的变量,也称为静态声明的变量,也称为静态声明的变量,也称为静态声明的变量,也称为静态变量。静态变量在程序运行过程中一直保留其值,变量。静态变量在程序运行过程中一直保留其值,变量。静态变量在程序运行过程中一直保留其值,变量。静态变量在程序运行过程中一直保留其值,即即即即每次调用过程,变量保持原来的值。每次调用过程,变量保持原来的值。每次调用过程,变量保持原来的值。每次调用过程,变量保持原来的值。关键字关键字Dim或或Static的区别:的区别:隐式声明变量隐式声明变量 未进行上述的声明而直接使用变量,未进行上述的声明而直接使用变量,称变量的称变量的隐式声明隐式声明。采用隐式声明的变量都。采用隐式声明的变量都是变体型(是变体型(Variant Variant)。)。注意注意:VBAVBAVBAVBA中允许不事先声明而直接使用变量,可以通过中允许不事先声明而直接使用变量,可以通过中允许不事先声明而直接使用变量,可以通过中允许不事先声明而直接使用变量,可以通过语句语句语句语句 Option ExplicitOption ExplicitOption ExplicitOption Explicit,来要求所使用的变量必须,来要求所使用的变量必须,来要求所使用的变量必须,来要求所使用的变量必须事先声明,否则事先声明,否则事先声明,否则事先声明,否则VBAVBAVBAVBA会发出警告信息。会发出警告信息。会发出警告信息。会发出警告信息。隐式声明变量隐式声明变量下下下下面面面面是是是是一一一一个个个个简简简简单单单单的的的的程程程程序序序序,其其其其使使使使用用用用的的的的变变变变量量量量a,a,a,a,b,b,b,b,SumSumSumSum都没有事先定义。都没有事先定义。都没有事先定义。都没有事先定义。Private Sub Form_Click()Private Sub Form_Click()Private Sub Form_Click()Private Sub Form_Click()SumSumSumSum=0=0=0=0 a a a a=10=10=10=10 b b b b=20=20=20=20 Sum=a+b Sum=a+b Sum=a+b Sum=a+b Print Sum=;Sum Print Sum=;Sum Print Sum=;Sum Print Sum=;SumEnd Sub End Sub End Sub End Sub 良良良良好好好好的的的的编编编编程程程程习习习习惯惯惯惯应应应应该该该该是是是是“先先先先声声声声明明明明变变变变量量量量,后后后后使使使使用用用用变变变变量量量量”,这这这这样样样样做做做做可可可可以以以以提提提提高高高高程程程程序序序序的的的的效效效效率率率率,同同同同时时时时也也也也使使使使程程程程序序序序易易易易于于于于调调调调试试试试。VBA VBA VBA VBA 中中中中可可可可以以以以强强强强制制制制显显显显式式式式声声声声明明明明,可可可可以以以以在在在在窗窗窗窗体体体体模模模模块块块块、标标标标准准准准模模模模块块块块和和和和类类类类模模模模块块块块的的的的通通通通用用用用声声声声明明明明段段段段中中中中加加加加入入入入语语语语句句句句:Option ExplicitOption ExplicitOption ExplicitOption Explicit下面是一个简单的程序,其使用的变量下面是一个简单的程序,其使用的变量a,b,Sum都没有事都没有事声明而未赋值的变量的值为:声明而未赋值的变量的值为:数值型变量初始化为数值型变量初始化为0 0;字符型变量为零长度字符串;字符型变量为零长度字符串;变体型变量初始化为变体型变量初始化为 EmptyEmpty。变量的初始化变量的初始化声明而未赋值的变量的值为:变量的初始化声明而未赋值的变量的值为:变量的初始化8-2-3 8-2-3 运算符和表达式(教材运算符和表达式(教材P199P199页)页)运算符运算符算术运算符算术运算符算术运算符算术运算符8-2-3 运算符和表达式(教材运算符和表达式(教材P199页)运算符页)运算符例如:例如:123+456123+456123+456123+456 结果结果 123456123456123456123456 123&456123&456123&456123&456 结果结果 123456123456123456123456 使用上使用上 与与+的区别:的区别:例如:例如:abcdef&12345abcdef&12345abcdef&12345abcdef&12345 结果为结果为 abcdef12345abcdef12345abcdef12345abcdef12345 123&456123&456123&456123&456 结果为结果为 123456123456123456123456 abcdef+12345 abcdef+12345 abcdef+12345 abcdef+12345 结果为结果为结果为结果为 出错出错出错出错 123+456 123+456 123+456 123+456 结果为结果为结果为结果为 579579579579 连接运算符:连接运算符:、+(字符串连接)(字符串连接)例如:例如:123+456 结果结果 123456 将两个操作数进行大小比较,结果为逻辑值。将两个操作数进行大小比较,结果为逻辑值。将两个操作数进行大小比较,结果为逻辑值。将两个操作数进行大小比较,结果为逻辑值。注意:注意:注意:注意:字符串比较字符串比较字符串比较字符串比较,则按字符的则按字符的则按字符的则按字符的ASCIIASCIIASCIIASCII码值从左到码值从左到码值从左到码值从左到右一一比较,直到出现不同的字符为止。右一一比较,直到出现不同的字符为止。右一一比较,直到出现不同的字符为止。右一一比较,直到出现不同的字符为止。关系运算符关系运算符 将两个操作数进行大小比较,结果为逻辑值。关系运算符将两个操作数进行大小比较,结果为逻辑值。关系运算符将操作数进行逻辑运算,结果是逻辑值将操作数进行逻辑运算,结果是逻辑值将操作数进行逻辑运算,结果是逻辑值将操作数进行逻辑运算,结果是逻辑值逻辑运算符逻辑运算符将操作数进行逻辑运算,结果是逻辑值逻辑运算符将操作数进行逻辑运算,结果是逻辑值逻辑运算符v组成组成组成组成 由变量、常量、函数等运算对象加上运算符、圆括由变量、常量、函数等运算对象加上运算符、圆括由变量、常量、函数等运算对象加上运算符、圆括由变量、常量、函数等运算对象加上运算符、圆括号组成的式子。号组成的式子。号组成的式子。号组成的式子。v书写规则书写规则书写规则书写规则 (1)(1)(1)(1)运算符不能相邻。例运算符不能相邻。例运算符不能相邻。例运算符不能相邻。例a+-ba+-ba+-ba+-b是错误的。是错误的。是错误的。是错误的。(2)(2)(2)(2)乘号不能省略。例乘号不能省略。例乘号不能省略。例乘号不能省略。例x x x x 乘以乘以乘以乘以y y y y 应写成:应写成:应写成:应写成:x*yx*yx*yx*y。(3)(3)(3)(3)括号必须成对出现,均使用圆括号。括号必须成对出现,均使用圆括号。括号必须成对出现,均使用圆括号。括号必须成对出现,均使用圆括号。(4)(4)(4)(4)表达式从左到右在同一基准上书写,无高低。表达式从左到右在同一基准上书写,无高低。表达式从左到右在同一基准上书写,无高低。表达式从左到右在同一基准上书写,无高低。v运算优先级运算优先级运算优先级运算优先级 算术运算符算术运算符算术运算符算术运算符 连接运算符连接运算符连接运算符连接运算符 关系运算符关系运算符关系运算符关系运算符 逻辑运算逻辑运算逻辑运算逻辑运算表达式表达式组成表达式组成表达式例例例例1 1 1 1:用人单位招聘秘书:年龄小于:用人单位招聘秘书:年龄小于:用人单位招聘秘书:年龄小于:用人单位招聘秘书:年龄小于40404040岁的女性,学历专科或本科,岁的女性,学历专科或本科,岁的女性,学历专科或本科,岁的女性,学历专科或本科,年龄年龄年龄年龄40404040,性别,性别,性别,性别=“=“=“=“女女女女”,(学历学历学历学历=“=“=“=“专科专科专科专科”,学历,学历,学历,学历=“=“=“=“本科本科本科本科”)And And And And And And And And OrOrOrOr例例例例2 2 2 2:算术表达式:算术表达式:算术表达式:算术表达式:正确的正确的正确的正确的VBAVBAVBAVBA表达式:表达式:表达式:表达式:3 3 3 3=x And x=7=x And x=7=x And x=7=x And x=7 错误的错误的错误的错误的VBAVBAVBAVBA表达式:表达式:表达式:表达式:3=x=7 3=x=7 3=x=7 3=x=7 或或或或 3=x 3=x 3=x 3=x Or x=7Or x=7Or x=7Or x=7 考虑:考虑:考虑:考虑:若分别写成:若分别写成:若分别写成:若分别写成:年龄年龄年龄年龄40 And 40 And 40 And 40 And 性别性别性别性别=女女女女 And (And (And (And (学历学历学历学历=专科专科专科专科 And And And And 学历学历学历学历=本本本本科科科科)年龄年龄年龄年龄40 Or 40 Or 40 Or =0 x=0 x=0 x=0 ThenThenThenThen y=2*x+1 y=2*x+1 y=2*x+1 y=2*x+1 MsgBox y:&y MsgBox y:&y MsgBox y:&y MsgBox y:&yEnd SubEnd SubEnd SubEnd SubPrivate Sub p1()Private Sub p1()Dim x As Integer,y As Integer Dim x As Integer,y As Integer x=InputBox(“x=InputBox(“请输入请输入x x值值”)IfIf x=0 x=0 ThenThen y=2*x+1 y=2*x+1 ElseElse y=1 y=1 MsgBox y:&y MsgBox y:&yEnd SubEnd Sub根据输入根据输入根据输入根据输入x x x x的值,观察的值,观察的值,观察的值,观察y y y y的输出结果的输出结果的输出结果的输出结果Private Sub p1()Private Sub p多行多行 If If 语句语句格式:格式:If If 表达式表达式 Then Then 语句组语句组1 1 Else Else 语句组语句组22 End If End If多行多行 If 语句语句多行多行多行多行IfIfIfIf语句的执行过程是:语句的执行过程是:语句的执行过程是:语句的执行过程是:如果如果如果如果“表达式表达式表达式表达式”的值为真,的值为真,的值为真,的值为真,则执行语句组则执行语句组则执行语句组则执行语句组1 1 1 1;否则执行语句组;否则执行语句组;否则执行语句组;否则执行语句组2 2 2 2。当执行完语句组。当执行完语句组。当执行完语句组。当执行完语句组1 1 1 1或语句组或语句组或语句组或语句组2 2 2 2后,程序流程跳转到语句后,程序流程跳转到语句后,程序流程跳转到语句后,程序流程跳转到语句End IfEnd IfEnd IfEnd If的后面。的后面。的后面。的后面。语句组可以由一条或多条语句组成,语句组不能与语句组可以由一条或多条语句组成,语句组不能与语句组可以由一条或多条语句组成,语句组不能与语句组可以由一条或多条语句组成,语句组不能与ThenThenThenThen书写在同一行,否则书写在同一行,否则书写在同一行,否则书写在同一行,否则VBAVBAVBAVBA认为是一个单行认为是一个单行认为是一个单行认为是一个单行IfIfIfIf语句,语句,语句,语句,会导致会导致会导致会导致ElseElseElseElse没有匹配的没有匹配的没有匹配的没有匹配的IfIfIfIf。语句语句语句语句“End If”End If”End If”End If”是多行是多行是多行是多行IfIfIfIf语句的结束标志。在多行语句的结束标志。在多行语句的结束标志。在多行语句的结束标志。在多行IfIfIfIf语句中,即使省略语句中,即使省略语句中,即使省略语句中,即使省略ElseElseElseElse子句,也要写该结束标志。省略子句,也要写该结束标志。省略子句,也要写该结束标志。省略子句,也要写该结束标志。省略ElseElseElseElse子句时的多行子句时的多行子句时的多行子句时的多行IfIfIfIf语句形式为:语句形式为:语句形式为:语句形式为:If If If If 表达式表达式表达式表达式 Then Then Then Then 语句组语句组语句组语句组 End IfEnd IfEnd IfEnd If多行多行If语句的执行过程是:如果语句的执行过程是:如果“表达式表达式”的值为真,则执行语句的值为真,则执行语句 例:计算分段函数例:计算分段函数单行单行单行单行IfIfIfIf语句实现:语句实现:语句实现:语句实现:If x=0 Then y=cos(x)If x=0 Then y=cos(x)If x=0 Then y=cos(x)If x=0 Then y=cos(x)x3+3*x x3+3*x x3+3*x x3+3*x If x0 Then If x0 Then If x0 Then If x0 Then y=sin(x)+sqr(x*x+1)y=sin(x)+sqr(x*x+1)y=sin(x)+sqr(x*x+1)y=sin(x)+sqr(x*x+1)多行多行多行多行IfIfIfIf语句实现:语句实现:语句实现:语句实现:If x0 ThenIf x0 Then y=sin(x)+sqr(x*x+1)y=sin(x)+sqr(x*x+1)Else Else y=cos(x)y=cos(x)x3+3*x x3+3*x End If End If 例:计算分段函数单行例:计算分段函数单行If语句实现:语句实现:If x=0 ThenIfIf语句的嵌套语句的嵌套IfIf语句的嵌套是指语句的嵌套是指IfIf或或ElseElse后面的语句后面的语句块中又包含块中又包含IfIf语句。语句。If If Then1 Then If If Then11 Then End If End If End If End If If语句的嵌套语句的嵌套 例:已知例:已知x x,y y,z z三个数,使得三个数,使得xyzxyz 用一个用一个IFIF语句和一个嵌套的语句和一个嵌套的IFIF语句实现语句实现If xy Then t=x:x=y:y=tIf xy Then t=x:x=y:y=t If yz ThenIf yz Then t=y:y=z:z=t t=y:y=z:z=t If xy Then If xyzIf xy IfThenElseIfIfThenElseIf语句语句(多分支结构多分支结构)If If Then1 Then 1 ElseIf ElseIf Then2 Then 2 Else Else 语句块语句块 n+1n+1 End IfEnd IfIfThenElseIf语句语句(多分支结构多分支结构)不管有几个分支,依次判断,当某条件满不管有几个分支,依次判断,当某条件满足,执行相应的语句,其余分支不再执行;足,执行相应的语句,其余分支不再执行;若条件都不满足,且有若条件都不满足,且有ElseElse子句,则执行该子句,则执行该语句块,否则什么也不执行。语句块,否则什么也不执行。vElseIfElseIf不能写成不能写成 Else IfElse If。说明:说明:不管有几个分支,依次判断,当某条件满足,执行相应的语句,其余不管有几个分支,依次判断,当某条件满足,执行相应的语句,其余4747可编辑可编辑可编辑可编辑47可编辑可编辑例:已知百分制成绩例:已知百分制成绩例:已知百分制成绩例:已知百分制成绩markmarkmarkmark,显示对应的五级制成绩,显示对应的五级制成绩,显示对应的五级制成绩,显示对应的五级制成绩 下列三种方法哪些正确,哪些错误?下列三种方法哪些正确,哪些错误?下列三种方法哪些正确,哪些错误?下列三种方法哪些正确,哪些错误?例:已知百分制成绩例:已知百分制成绩mark,显示对应的五级制成绩,显示对应的五级制成绩 :与:与:与:与 同类型的下面四种形式之一:同类型的下面四种形式之一:同类型的下面四种形式之一:同类型的下面四种形式之一:表达式表达式表达式表达式 例:例:例:例:AAAA 一组枚举表达式一组枚举表达式一组枚举表达式一组枚举表达式(用逗号分隔用逗号分隔用逗号分隔用逗号分隔)2,4,6,8 2,4,6,8 2,4,6,8 2,4,6,8 表达式表达式表达式表达式1 To 1 To 1 To 1 To 表达式表达式表达式表达式2 2 2 2 60 To 10060 To 10060 To 10060 To 100 Is Is Is Is 关系运算符表达式关系运算符表达式关系运算符表达式关系运算符表达式 Is 60Is 60Is 60Is 60Select CaseSelect CaseSelect CaseSelect Case语句语句语句语句(情况语句情况语句情况语句情况语句)语句格式:语句格式:Select Case Select Case Select Case Select Case 变量或表达式变量或表达式变量或表达式变量或表达式 Case Case Case Case 表达式列表表达式列表表达式列表表达式列表1 1 1 1 语句块语句块语句块语句块1 1 1 1 Case Case Case Case 表达式列表表达式列表表达式列表表达式列表2 2 2 2 语句块语句块语句块语句块2 2 2 2 Case ElseCase ElseCase ElseCase Else 语句块语句块语句块语句块n+1n+1n+1n+1End SelectEnd SelectEnd SelectEnd Select数值型或字符串表达式数值型或字符串表达式数值型或字符串表达式数值型或字符串表达式:与:与同类型的下面四种形式之一:同类型的下面四种形式之一:程序流程图语句块语句块语句块语句块n+1n+1语句块语句块语句块语句块1 1语句块语句块语句块语句块2 2语句块语句块语句块语句块n n条件条件条件条件2 2T TF F.条件条件条件条件n nT TF F条件条件条件条件1 1T TF F程序流程图语句块程序流程图语句块n+1语句块语句块1语句块语句块2语句块语句块n条件条件2TF 例:变量例:变量例:变量例:变量strCstrCstrCstrC中存放了一个字符,判断该字符类型。中存放了一个字符,判断该字符类型。中存放了一个字符,判断该字符类型。中存放了一个字符,判断该字符类型。用多分支结构实现:用多分支结构实现:用多分支结构实现:用多分支结构实现:If Ucase(strC)=A And Ucase(strC)=A And Ucase(strC)=A And Ucase(strC)=A And Ucase(strC)=0 And strC=0 And strC=0 And strC=0 And strC yx y,x x,y y)条件函数条件函数循环结构(参照教材P211页)For NextFor Next循环循环 Do LoopDo Loop循环循环循环结构(参照教材循环结构(参照教材P211页)页)ForNextForNext循环结构:循环结构:将一段程序重复执行指定将一段程序重复执行指定将一段程序重复执行指定将一段程序重复执行指定的次数,其中使用一个计数变量,统计执行的次数。的次数,其中使用一个计数变量,统计执行的次数。的次数,其中使用一个计数变量,统计执行的次数。的次数,其中使用一个计数变量,统计执行的次数。格式:格式:For For 循环变量初值循环变量初值 to to 终值终值 Step Step 步长步长 语句块语句块 Exit ForExit For 语句块语句块 Next Next 循环变量循环变量 ForNextForNext循环语句循环语句 P211P211循环体循环体循环体循环体ForNext循环结构:将一段程序重复执行指定的次数,其中循环结构:将一段程序重复执行指定的次数,其中 循环变量循环变量循环变量循环变量 =终值终值终值终值 语句块语句块语句块语句块 Exit ForExit ForExit ForExit For 语句块语句块语句块语句块 循环变量加步长循环变量加步长循环变量加步长循环变量加步长 T T T T F F F F 循环变量得初值循环变量得初值循环变量得初值循环变量得初值 循环变量循环变量 =终值终值 语句块语句块 Exit For 语句块语句块功功能能:执执执执行行行行ForForForFor语语语语句句句句时时时时,“循循循循环环环环变变变变量量量量”设设设设为为为为“初初初初值值值值”;执执执执行行行行到到到到NextNextNextNext语语语语句句句句时时时时,步步步步长长长长加加加加(减减减减)到到到到循循循循环环环环变变变变量量量量上上上上;再再再再执执执执行行行行ForForForFor语语语语句句句句时时时时,若若若若“循循循循环环环环变变变变量量量量”超超超超过过过过“终终终终值值值值”则循环结束。则循环结束。则循环结束。则循环结束。步长:未指定值时默认为步长:未指定值时默认为步长:未指定值时默认为步长:未指定值时默认为1 1 1 1。若若若若“步步步步长长长长”是是是是正正正正数数数数或或或或0 0 0 0,则则则则“初初初初值值值值”应应应应大大大大于于于于等等等等于于于于“终值终值终值终值”,否则,否则,否则,否则,“初值初值初值初值”应小于等于应小于等于应小于等于应小于等于“终值终值终值终值”。功能:执行功能:执行For语句时,语句时,“循环变量循环变量”设为设为“初值初值”;执行到;执行到Ne例:例:计算累加程序计算累加程序 S=1+2+3+4.+x,S=1+2+3+4.+x,并输出结果。并输出结果。方法:接收一个累加的终值,确定一个循环变量,循方法:接收一个累加的终值,确定一个循环变量,循方法:接收一个累加的终值,确定一个循环变量,循方法:接收一个累加的终值,确定一个循环变量,循环变量有环变量有环变量有环变量有2 2 2 2个作用(加数和循环变量),确定一个存储个作用(加数和循环变量),确定一个存储个作用(加数和循环变量),确定一个存储个作用(加数和循环变量),确定一个存储累加和的变量。使用循环计算,最后输出显示结果。累加和的变量。使用循环计算,最后输出显示结果。累加和的变量。使用循环计算,最后输出显示结果。累加和的变量。使用循环计算,最后输出显示结果。Dim s As integer,x As integerDim s As integer,x As integer x=InputBox(x=InputBox(请输入累加的终值请输入累加的终值)For x=l To x For x=l To x s=s+x s=s+x Next Next思考:思考:思考:思考:计算计算计算计算=1+3+5+7X=1+3+5+7X=1+3+5+7X=1+3+5+7X 或或或或 2+4+6+8X 2+4+6+8X 2+4+6+8X 2+4+6+8X 如何编写?如何编写?如何编写?如何编写?例:计算累加程序例:计算累加程序 S=1+2+3+4.+x,并输出结果。并输出结果。例:计算累乘程序例:计算累乘程序 S=1*2*3*4XS=1*2*3*4X 方法:接收一个累乘的终值,确定一个循环变量,方法:接收一个累乘的终值,确定一个循环变量,方法:接收一个累乘的终值,确定一个循环变量,方法:接收一个累乘的终值,确定一个循环变量,循环变量有循环变量有循环变量有循环变量有2 2 2 2个作用(乘数和循环变量),确定一个个作用(乘数和循环变量),确定一个个作用(乘数和循环变量),确定一个个作用(乘数和循环变量),确定一个存储累乘积的变量。使用循环计算,最后输出显示结存储累乘积的变量。使用循环计算,最后输出显示结存储累乘积的变量。使用循环计算,最后输出显示结存储累乘积的变量。使用循环计算,最后输出显示结果。果。果。果。Dim 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 1 1。例:计算累乘程序例:计算累乘程序 S=1*2*3*4X注意:注意:出了循环,循环控制变量值的问题。出了循环,循环控制变量值的问题。出了循环,循环控制变量值的问题。出了循环,循环控制变量值的问题。例程序段:例程序段:例程序段:例程序段:For i=2 To 13 Step 3 For i=2 To 13 Step 3 For i=2 To 13 Step 3 For i=2 To 13 Step 3 循环执行次数循环执行次数循环执行次数循环执行次数 debug.Print i debug.Print i debug.Print i debug.Print i 输出输出输出输出 i i i i的值分别为的值分别为的值分别为的值分别为:2 5 8 11 2 5 8 11 2 5 8 11 2 5 8 11 Next i Next i Next i Next i debug.Print i debug.Print i debug.Print i debug.Print i 出了循环输出为出了循环输出为出了循环输出为出了循环输出为:i=14:i=14:i=14:i=14注意:出了循环,循环控制变量值的问题。注意:出了循环,循环控制变量值的问题。例例例例:改变循环控制变量对循环的影响改变循环控制变量对循环的影响改变循环控制变量对循环的影响改变循环控制变量对循环的影响 Private Sub Command1_Click()Private Sub Command1_Click()Private Sub Command1_Click()Private Sub Command1_Click()j=0 j=0 j=0 j=0 For i=1 To 20 Step 2 For i=1 To 20 Step 2 For i=1 To 20 Step 2 For i=1 To 20 Step 2 i=i+3i=i+3i=i+3i=i+3 j=j+1 j=j+1 j=j+1 j=j+1 Print Print Print Print 第第第第;j;j;j;j;次循环次循环次循环次循环i=;ii=;ii=;ii=;i Next i Next i Next i Next i Print Print Print Print 退出循环后退出循环后退出循环后退出循环后i=;ii=;ii=;ii=;i End Sub End Sub End Sub End Sub正常情况:正常情况:正常情况:正常情况:i=1,3,5,7,9,11,13,15,17,19i=1,3,5,7,9,11,13,15,17,19i=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,19i=4,9,14,19i=4,9,14,19例例:改变循环控制变量对循环的影响改变循环控制变量对循环的影响DoLoopDoLoop循环语句循环语句(用于控制循环次数未知用于控制循环次数未知)形式形式形式形式1 1 1 1:Do While|Until Do While|Until Do While|Until Do While|Until 语句块语句块语句块语句块 Exit Do Exit Do Exit Do Exit Do 语句块语句块语句块语句块 Loop Loop Loop Loop 形式形式形式形式2 2 2 2:DoDoDoDo 语句块语句块语句块语句块 Exit DoExit DoExit DoExit Do 语句块语句块语句块语句块 Loop While|Until Loop While|Until Loop While|Until Loop While|Until DoLoop循环语句循环语句(用于控制循环次数未知用于控制循环次数未知)DoLoopDoLoop
展开阅读全文