09第八九章模块与VBAACCESS培训讲义794613

上传人:无*** 文档编号:196135715 上传时间:2023-03-26 格式:PPT 页数:122 大小:1.44MB
收藏 版权申诉 举报 下载
09第八九章模块与VBAACCESS培训讲义794613_第1页
第1页 / 共122页
09第八九章模块与VBAACCESS培训讲义794613_第2页
第2页 / 共122页
09第八九章模块与VBAACCESS培训讲义794613_第3页
第3页 / 共122页
资源描述:

《09第八九章模块与VBAACCESS培训讲义794613》由会员分享,可在线阅读,更多相关《09第八九章模块与VBAACCESS培训讲义794613(122页珍藏版)》请在装配图网上搜索。

1、 1、明确自己,明确目标!2、注重方法,100投入!3、团队合作,共解难题!4、注重资料,按章按知识点逐一把握 5、不抛弃不放弃,坚持就是胜利!笔试笔试(选择题选择题35个个+填空题填空题15空)空)公共基础知识(公共基础知识(30分;识记为主,理解及推导分;识记为主,理解及推导为辅)为辅)ACCESS数据库程序设计(数据库程序设计(70分;假期把握练分;假期把握练习册)习册)机试机试(三大题)以真题为准,强化练习!三大题)以真题为准,强化练习!基本操作基本操作30分分 简单应用简单应用40分分 综合应用综合应用30分分 模块是模块是AccessAccess数据库数据库7 7个个对象之一,其实

2、质就是没有界对象之一,其实质就是没有界面的面的VBAVBA程序。模块具有很强程序。模块具有很强的通用性,窗体、报表等对象的通用性,窗体、报表等对象都可以调用模块内部的过程。都可以调用模块内部的过程。模块基本上是由声明、语模块基本上是由声明、语句和过程组成的集合句和过程组成的集合,它们作,它们作为一个已命名的单元存储在一为一个已命名的单元存储在一起,对起,对VBAVBA代码进行组织。代码进行组织。Access Access 有两种类型的模有两种类型的模块:块:标准模块标准模块和和类模块。类模块。v类模块类模块(注意两种模块对比特点注意两种模块对比特点)包括包括窗体模块窗体模块(模块中包含在指定的

3、模块中包含在指定的窗体或其控件上事件发生时触发的窗体或其控件上事件发生时触发的事件过程的代码。事件过程的代码。)和和报表模块报表模块(模模块中包含由在指定报表或其控件上块中包含由在指定报表或其控件上发生的事件触发的事件过程的代发生的事件触发的事件过程的代码。码。),它们各自,它们各自与某一特定窗体与某一特定窗体或报表相关联。或报表相关联。类模块类模块可以可以调用标准模块中调用标准模块中定义好定义好的的过程过程 作用范围作用范围限于所属窗体或报表内部,限于所属窗体或报表内部,生命期生命期也随窗体或报表的打开而开也随窗体或报表的打开而开始、关闭而结束始、关闭而结束v标准模块标准模块(注意两种模块对

4、比特点注意两种模块对比特点)标准模块包含的是标准模块包含的是通用过程和常用过通用过程和常用过程程,这些通用过程,这些通用过程不与任何对象相关不与任何对象相关联,联,常用过程可以在数据库中的任何常用过程可以在数据库中的任何位置运行。类模块可以调用标准模块位置运行。类模块可以调用标准模块中定义好的过程中定义好的过程 标准模块中的公共变量和公共过程具标准模块中的公共变量和公共过程具有有全局特性全局特性,作用范围作用范围在整个应用程在整个应用程序,序,生命期生命期伴着应用程序运行而开始、伴着应用程序运行而开始、关闭而结束关闭而结束v模块的基本组成单元模块的基本组成单元过程过程 SubSub子过程子过程

5、 可执行一系列操作,可执行一系列操作,无返回值无返回值 可在该子过程之外用可在该子过程之外用CALLCALL显示调用显示调用 调用调用Call mysubCall mysub(参数参数1 1,参数,参数2 2,)FunctionFunction函数函数 执行一系列操作,执行一系列操作,返回执行结果返回执行结果 返回值直接利用返回值直接利用函数名调用函数名调用获得获得 调用调用x=myFuntionx=myFuntion(参数参数)Sub mysub(参数参数1,参数,参数2,)变量声明部分变量声明部分 操作语句部分操作语句部分 End SubFunction myFunction(参数参数)变

6、量声明部分变量声明部分 操作语句部分操作语句部分 End Functionv模块的创建模块的创建 创建一个名为创建一个名为“模块入门模块入门”的新模块的新模块保存为保存为“模块入门模块入门”v过程的创建过程的创建 在在“模块入门模块入门”模块中创建一个模块中创建一个HelloHello过程过程用户输入用户输入执行过程执行过程 双击双击工程工程窗口窗口属性属性窗口窗口代码代码窗口窗口立即立即窗口窗口对象选定器对象选定器过程选定器过程选定器ACCESSACCESS视图视图运行子过程运行子过程/用户窗体用户窗体中断中断重新设定重新设定工程管理器工程管理器插入模块插入模块属性窗口属性窗口对象浏览器对象

7、浏览器 显示出对象库以及工显示出对象库以及工程里过程中的程里过程中的可用类、属可用类、属性、方法、事件及常数变性、方法、事件及常数变量。量。可以用它来搜索及使可以用它来搜索及使用既有的对象,或是来源用既有的对象,或是来源于其他应用程序的对象。于其他应用程序的对象。u在数据库窗口单击在数据库窗口单击“工具工具”“宏宏”“Visual Basic“Visual Basic编辑器编辑器”u双击要查看或编辑的模块对象双击要查看或编辑的模块对象 u新建一个模块对象新建一个模块对象 u对窗体和报表,在设计视图中点击对窗体和报表,在设计视图中点击“代码代码”按钮按钮 u对窗体和报表,在设计视图中,点击某一控

8、件的对窗体和报表,在设计视图中,点击某一控件的“事件属事件属性性”对象对象:对象是基本的运行时的实体,如窗体、报表、各种对象是基本的运行时的实体,如窗体、报表、各种控件等,控件等,包括包括作用于对象的作用于对象的操作(方法)操作(方法)和对象的和对象的响应响应(事件)。(事件)。将数据和处理这些数据的过程封装在一起。将数据和处理这些数据的过程封装在一起。类类:一个抽象的整体概念一个抽象的整体概念 ,对象是类的实例化。,对象是类的实例化。类与对象类与对象是面向对象程序设计语言的基础。是面向对象程序设计语言的基础。例:例:“学生学生”类类,“张三张三”对象对象 所有对象都有自己的属性。所有对象都有

9、自己的属性。用来描述和反映对象特征的参用来描述和反映对象特征的参数。如:控件名称数。如:控件名称(Name)(Name)、标题、标题(Caption)(Caption)、颜色、颜色(Color)(Color)、字、字体体(FontName(FontName)等属性决定了对象展现给用户的界面具有什么样等属性决定了对象展现给用户的界面具有什么样的外观及功能。的外观及功能。在设计模式下,通过属性窗口直接设置对象的属性。在设计模式下,通过属性窗口直接设置对象的属性。在程序的代码中通过赋值实现在程序的代码中通过赋值实现,其格式为:,其格式为:对象名对象名.属性名属性名=属性值属性值 例:例:Label1

10、0.Caption=“Label10.Caption=“显示显示”基本语法:基本语法:Forms(或或Reports)!窗体窗体(或报表或报表)名称名称!控件名称控件名称.属性名属性名 注意要点注意要点 如果在通用模块或在一类模块中引用另一类模块的控件时,如果在通用模块或在一类模块中引用另一类模块的控件时,应该使用上述完整语法。应该使用上述完整语法。如果在类模块中引用自己窗体上的控件,仅采用下面语法:如果在类模块中引用自己窗体上的控件,仅采用下面语法:控件名称控件名称.属性名属性名例如:在窗体例如:在窗体Form1中引用中引用Form2上的上的Label1控件控件 Forms!Form2!La

11、bel1.Caption=“教师信息表教师信息表”在引用在引用Form2Form2上引用自己的上引用自己的Label1Label1控件控件 Label1.Caption=“教师信息表教师信息表属性属性说明说明Name(名称名称)返回或设定对象的名字返回或设定对象的名字Caption(标题标题)返回或设定对象的标题文字返回或设定对象的标题文字Controlsource(数据源数据源)指定控件显示的数据源指定控件显示的数据源Decimalplaces(格式格式)指定显示的小数位数指定显示的小数位数Defaulvalue(默认值默认值)设定控件的默认值设定控件的默认值Visible(可见性可见性)控

12、件或窗体、报表是否可见控件或窗体、报表是否可见Scrollbars(滚动条滚动条)窗体或组合框上的滚动条窗体或组合框上的滚动条Height、Width(高、宽高、宽)设定控件的大小设定控件的大小Left、Top(左、上边距左、上边距)设定控件在窗体或报表中的位置设定控件在窗体或报表中的位置Backstyle(背景样式背景样式)指定控件是否透明:常规为指定控件是否透明:常规为1 1,透明为,透明为0 0Backcolor(背景颜色背景颜色)指定控件或节的颜色指定控件或节的颜色fontName、FontSize(字体名称、字体大小字体名称、字体大小)设定字体及字体大小设定字体及字体大小Enable

13、d(控件是否可用)控件是否可用)控件是否接受焦点和响应用户操作控件是否接受焦点和响应用户操作Text设置或返回文本框、组合框中的文本设置或返回文本框、组合框中的文本v三、事件三、事件(Event)(Event)及事件过程及事件过程(Event Procedure)(Event Procedure)事件:可被对象识别的动作事件:可被对象识别的动作。如:窗体打开如:窗体打开OnOpenOnOpen,按钮的单,按钮的单击击OnClickOnClick,双击,双击OnDbClickOnDbClick等等 事件过程:事件过程:是指是指附在该对象上的程序代码附在该对象上的程序代码,是事件触发后,是事件触发

14、后处理的程序。事件过程的形式如下:处理的程序。事件过程的形式如下:Sub 对象名对象名_事件过程名事件过程名(参数列表)(参数列表).(事件过程代码)事件过程代码)End Sub例如:例如:Sub cmdOk_Click()cmdOk.FontSize=20 设置命令按钮的字体大小为设置命令按钮的字体大小为20 End Sub 方法:方法:在对象上可操作的过程,是在对象上可操作的过程,是VBVB系统提供的一种特系统提供的一种特殊的过程和函数殊的过程和函数 方法是面向对象的方法是面向对象的,所以方法调用一般要指明对象。,所以方法调用一般要指明对象。对象方法调用形式:对象方法调用形式:对象对象.方

15、法方法 参数列表参数列表 例如:例如:Debug.print 欢迎您使用欢迎您使用ACCESS 在立即窗口中打印出文字在立即窗口中打印出文字v本节内容及要求本节内容及要求 .1 1.熟悉熟悉VBVB程序中代码和语句书写规则程序中代码和语句书写规则 .2 2.掌握掌握VBVB的数据类型的数据类型 .3 3.掌握掌握VBVB的运算符和表达式的使用的运算符和表达式的使用 .4 4.掌握常用内部函数的使用掌握常用内部函数的使用.1 VBA1.VBA代码中不区分字母的大小写。代码中不区分字母的大小写。.2 2.一条语句写完后不需加任何结束符。一条语句写完后不需加任何结束符。.3 3.同行上可以书写多条语

16、句,语句间要用冒号同行上可以书写多条语句,语句间要用冒号“:”:”分隔。分隔。.4 4.若一个语句行不能写下全部语句时,可以换行。换行时若一个语句行不能写下全部语句时,可以换行。换行时需在本行后加入需在本行后加入续行符续行符,1 1个空格加下划线个空格加下划线“_”_”。.5 5.一行最多允许一行最多允许255255个字符。个字符。.6 6.注释以注释以RemRem开头,也可以使用单引号开头,也可以使用单引号“”,注释内容可,注释内容可直接出现在语句的后面。直接出现在语句的后面。.7 7.在在程序转向时需用到标号程序转向时需用到标号,标号标号是以字母开始而以冒号是以字母开始而以冒号结束的字符串

17、。结束的字符串。.8 8.函数和方法后应加上括号()。函数和方法后应加上括号()。LABEL10LABEL10与与label10label10相同相同 MyVar=“这是一个这是一个 _&“例子说明如何例子说明如何 _&“续行代码续行代码“空白加下划线空白加下划线 (_)(_)可接续两行以上的代码。可接续两行以上的代码。This is a comment.()()引导注释文本引导注释文本 Rem This is a comment RemRem引导注释文本引导注释文本 If Number=1 Then GoTo Line1 Else GoTo Line2 End if Line1:标号标号1

18、1 MyString=“数值等于数值等于1“Line2:标号标号2 2 MyString=数值等于数值等于2Sub x4()Dim x As Integer,y As Integer,z As Integery=1:z=1x=y+z:y=z+x:z=y+xDebug.Print x,y,z的值分别是:的值分别是:,x,y,zEnd SubByteByte(单字节型)(单字节型)无无 1 1 0IntegerInteger(整型)(整型)%字节字节/整数整数/是是否否2 2 0LongLong(长整型)(长整型)&长整型长整型/自动编自动编号号4 4 0SingleSingle(单精度型)(单精

19、度型)!单精度数单精度数4 4 0DoubleDouble(双精度型)(双精度型)#双精度数双精度数8 8 0CurrencyCurrency(货币型)(货币型)货币货币8 8 0StringString(字符型)(字符型)$文本文本 n n*1 1“”BooleanBoolean(布尔型)(布尔型)无无是是/否否2 2 FalseDateDate(日期型)(日期型)无无日期日期/时间时间8 8 0VariantVariant(变体型)(变体型)无无任何任何按需分配按需分配 EmptyObjectObject(对象型)(对象型)无无4 4 字段数据类型字段数据类型 VBAVBA数据类型数据类型

20、 Yes/NoYes/No BooleanBoolean Number(ByteNumber(Byte)ByteByte AutoNumber(LongAutoNumber(Long Integer)Integer)LongLong CurrencyCurrency CurrencyCurrency Date/TimeDate/Time DateDate Number(DoubleNumber(Double)DoubleDouble OLE ObjectOLE Object StringString AutoNumber/GVIAutoNumber/GVI(同步复制(同步复制IDID)不支持不

21、支持 MemroMemro stringstring Number(SingleNumber(Single)SingleSingle Number(IntegerNumber(Integer)IntegerInteger TextText StringString Hyper LinkHyper Link StringString 不支持不支持 VariantVariant 在进行在进行VBAVBA编程过程中,用户可以将一种数据类型的数据转换成另一编程过程中,用户可以将一种数据类型的数据转换成另一种特定类型的数据。种特定类型的数据。函数名函数名 目标类型目标类型 例例CbyteCbyte By

22、teByte Cbyte(125.5678)=126,Cbyte(12.50001)=13CintCint IntegerInteger Cint(1.35)=1,Cint(1.55)=2,Cint(2.5)=2ClngClng LongLong Clng(1.35)=1,Clng(2.51)=3,Clng(4.50)=4CsngCsng SingleSingle Csng(125)=125.0CdblCdbl DoubleDouble Cdbl(125)=125.0CcurCcur CurrencyCurrency CdateCdate DateDate Cdate(“2008-3-25”)

23、=#2008-3-35#CvarCvar VarriantVarriant CboolCbool BooleanBoolean CBool(0)=falseCstrCstr StringString Cstr(125.25)=“125.25”4舍舍6入入5留双的修约规则留双的修约规则条件(1)当你要进行修约的小数位上是5的时候;条件(2)5后面的所有小数位上没有任何有效数值。当条件(1)(2)同时成立的时候,那么会有两种修约结果,需要判断5前面的数位上的数字是奇数还是偶数。结果(1):如果是奇数:那么修约这个小数位的结果是向上进1;结果(2):否则修约这个小数位的结果是直接舍掉。当条件(1)条

24、件(2)有一条不成立的时候会有第三中修约结果。结果(3)那就直接进行普通的四舍五入就好了。举例:举例:3.15、3.25和和3.251 修约后保留修约后保留1位小数。位小数。3.15和3.25符合以下条件:(1)需要修约的小数位上恰好数值是5;(2)并且5后面没有任何数值了这时就是前面所说的,当条件(1)(2)同时成立的时候。对于3.15,5前面是1,属于奇数:此时修约位向上进1,修约结果是:3.2对于3.25,5前面是2,属于偶数:此时修约位进行舍弃,修约结果是:3.2对于3.251由于不符合条件(2)直接进行普通的四舍五入,修约结果是:3.3基本语法:基本语法:Private|Public

25、 Type 类型名类型名 元素名元素名 As 数据类型数据类型 元素名元素名 As 数据类型数据类型 End Type 例:定义学生类型数据例:定义学生类型数据 Public Type Students Name As String*8 Age As Integer End Type 声明变量:声明变量:Dim Student As Students 引用数据:引用数据:Student.Name=”张三张三”Student.Age=15:值值。当转。当转换其他的数值类型为换其他的数值类型为 Boolean Boolean 值时,值时,。当转换。当转换 Boolean Boolean 值为其他的

26、值为其他的数据类型时,数据类型时,。日期须以数字符号日期须以数字符号 (#)(#)扩起来,例如,扩起来,例如,#2008-3-23#2008-3-23#利用利用 Set Set 语句,声明为语句,声明为 Object Object 的的变量可以赋值为任何对象的引用。变量可以赋值为任何对象的引用。所有所有(用如用如DimDim、PrivatePrivate、PublicPublic或或StaticStatic等语句等语句)为其他类型变量的数为其他类型变量的数据类型。据类型。Variant Variant 数据类型数据类型 Variant Variant 是一种特殊的数据类型,除了定长是一种特殊的

27、数据类型,除了定长 String String 数数据及用户定义类型外,可以据及用户定义类型外,可以包含任何种类的数据,包含任何种类的数据,以及以及EmptyEmpty、ErrorError、Nothing Nothing 及及 NullNull等特殊值。等特殊值。可以用可以用 VarTypeVarType 函数函数(变量类型变量类型)或或 TypeNameTypeName(类型名类型名)函数来函数来检查检查 Variant Variant 中的数据实际类型。中的数据实际类型。VartypeVartype函数函数返回值及意义返回值及意义 第一个字符必须是字母或下划线第一个字符必须是字母或下划线

28、(_)(_)包含的字符数不超过包含的字符数不超过255255个个 不得与不得与VBAVBA的关键字同名,如不能使用的关键字同名,如不能使用SubSub、ForFor等等 不能使用下列字符:不能使用下列字符:!&$#!&$#(空格)(空格)从增强程序可读性角度出发,标识符应使人望文生义,了从增强程序可读性角度出发,标识符应使人望文生义,了解其代表的内涵。解其代表的内涵。在程序运行过程中,其值在程序运行过程中,其值不能被改变的量不能被改变的量称为常称为常量。量。VBAVBA中有三类常量:中有三类常量:普通常量、符号常量普通常量、符号常量 、系、系统常量统常量 整型常量:整型常量:10、110%(I

29、nteger)、23&(Long)实型常量:实型常量:0.123!(Single)、-1.123#、1.25E+3、-1.25E-3 字符串常量:字符串常量:“ABD”、“XYZ、”大家好大家好”逻辑常量:逻辑常量:ture、false 日期常量:日期常量:#2002-5-4 14:30:00 PM#、#09/02/99#在程序中,在程序中,某个常量多次被使用,则可以使用某个常量多次被使用,则可以使用一个符号来代替该常量一个符号来代替该常量,这样不仅在书写上方便,这样不仅在书写上方便,而且有效地改进了程序的可读性和可维护性。而且有效地改进了程序的可读性和可维护性。关键字关键字Const 声明符

30、号常量,基本语法如下声明符号常量,基本语法如下 Const 常量名常量名 As 类型类型|类型符号类型符号=常数表达式常数表达式例如:例如:Const PI#=3.1415926535 等价于:等价于:Const PI As Double=3.1415926535 VBAVBA系统提供了系统提供了应用程序和控件的系统定义常数应用程序和控件的系统定义常数。它们存放于系统的对象库中,在它们存放于系统的对象库中,在“对象浏览器对象浏览器”中中能查看这些常数。能查看这些常数。颜色常数颜色常数 常数常数 值值 描述描述 vbBlack 0 x0 黑色黑色 vbRed 0 xFF 红色红色 vbGreen

31、 0 xFF00 绿色绿色 vbYellow 0 xFFFF 黄色黄色 vbBlue 0 xFF0000 蓝色蓝色 vbMagenta 0 xFF00FF 紫红色紫红色 vbCyan 0 xFFFF00 青色青色 vbWhite 0 xFFFFFF 白色白色 星期常数星期常数 常数常数 值值 描述描述 vbSunday 1 星期日星期日 vbMonday 2 星期一星期一 vbTuesday 3 星期二星期二 vbWednesday 4 星期三星期三 vbThursday 5 星期四星期四 vbFriday 6 星期五星期五 vbSaturday 7 星期六星期六 程序中的变量为临时存在单元,

32、可存放文字、数值、程序中的变量为临时存在单元,可存放文字、数值、日期和对象属性。每个变量都有一个名字,程序通过变量名对变量进行日期和对象属性。每个变量都有一个名字,程序通过变量名对变量进行存取操作。存取操作。用用DimDim语句显式声明变量语句显式声明变量 1、Dim 变量名变量名 AS 类型类型 或或 Dim 变量名变量名类型符类型符 2、声明的每个变量都要一个单独的、声明的每个变量都要一个单独的 As 类型类型 子句,没有的作为子句,没有的作为变体类型(变体类型(VariantVariant)例例1:Dim iCount As integer,sum As single 等价于:等价于:D

33、im iCount%,sum!例例2:Dim iCount As integer,sum,name as string*10 则声明了三个变量,其中则声明了三个变量,其中icount为整型,为整型,sum为变体型为变体型,name为长度为为长度为10的定长字符串的定长字符串隐式声明变量隐式声明变量 VBAVBA允许用户在编写应用程序时,允许用户在编写应用程序时,不声明变量而直不声明变量而直接使用接使用,系统临时为新变量分配存储空间并使用,这,系统临时为新变量分配存储空间并使用,这就是隐式声明。就是隐式声明。所有隐式声明的变量都是所有隐式声明的变量都是VariantVariant数据数据类型类型

34、。VBAVBA根据程序中赋予变量的值来自动调整变量的根据程序中赋予变量的值来自动调整变量的类型。类型。例如:例如:变量变量a,b,Sum都没有事先定义。都没有事先定义。Private Sub Form_Click()Sum=0 a=10:b=20 Sum=a+b debug.Print Sum=“&Sum End Sub 强制显式声明变量强制显式声明变量Option ExplicitOption Explicit 良好的编程习惯都应该是良好的编程习惯都应该是“先声明变量,后使用先声明变量,后使用变量变量”,这样做可以提高程序的效率,同时也使程序这样做可以提高程序的效率,同时也使程序易于调试。易

35、于调试。VBAVBA中可以强制显式声明,在窗体模块、标中可以强制显式声明,在窗体模块、标准模块和类模块的通用声明段中加入:准模块和类模块的通用声明段中加入:Option Option ExplicitExplicitv变量的作用域和生命周期变量的作用域和生命周期 VBAVBA中,变量定义的位置和方式不同,则变量中,变量定义的位置和方式不同,则变量存在的时间存在的时间和和起作用的范围起作用的范围也有所不同,即变量也有所不同,即变量的的作用域与生命期作用域与生命期。变量的可见性:变量的可见性:即可对变量进行操作的状态。即可对变量进行操作的状态。变量作用域的三个层次:局部范围(过程级变量作用域的三个

36、层次:局部范围(过程级别)、模块范围、全局范围别)、模块范围、全局范围 局部范围(过程级别):局部范围(过程级别):定义在模块的过程内部,定义在模块的过程内部,只只有在声明此变量的过程中才可使用有在声明此变量的过程中才可使用 定义方式:定义方式:Dim x As Singl Static y As single 用用Dim Dim 定义的局部变量只有在它所在的过程运行时才会有值定义的局部变量只有在它所在的过程运行时才会有值 StaticStatic定义的局部变量在整个程序运行期间均有值,所以它可以定义的局部变量在整个程序运行期间均有值,所以它可以作为中间变量保存结果。作为中间变量保存结果。模块

37、范围模块范围(Private):定义在模块的所有过程外部的起定义在模块的所有过程外部的起始位置,运行时始位置,运行时在模块所包含的所有子过程和函数中可见在模块所包含的所有子过程和函数中可见。全局范围全局范围(PublicPublic):定义在模块的所有过程外部的起始定义在模块的所有过程外部的起始位置,运行时位置,运行时在所有类模块和标准模块的所包含的所有子在所有类模块和标准模块的所包含的所有子过程和函数过程中都见过程和函数过程中都见。一般。一般函数默认为函数默认为PublicPublic x范范围围 z范范围围 y范范围围x x全局变量全局变量 y y过程变量过程变量 z z过程静态变量过程静

38、态变量 数组数组并不是一种数据类型,而是一组相同类型数据的集合。并不是一种数据类型,而是一组相同类型数据的集合。用一个统一的名字(数组名)代表逻辑上相关的一批数据,每用一个统一的名字(数组名)代表逻辑上相关的一批数据,每个元素用下标变量来区分;下标变量代表元素在数组中的位置。个元素用下标变量来区分;下标变量代表元素在数组中的位置。Public/Private/Static/Dim 数组名数组名(下界下界 To 上界上界)As 数据类型数据类型 下界下界 和和 上界上界 不能使用变量,必须是常量,一般是整型常量。不能使用变量,必须是常量,一般是整型常量。例如:例如:Dim Workers(8)A

39、s Integer 未定义下界,下届默认为未定义下界,下届默认为0,有,有08共共9个元素个元素 Dim Workers(1 To 8)As Integer 下届为下届为1,上届为,上届为8,有,有18共共8个元素个元素数组必须先定义后使用数组必须先定义后使用 使用形式:数组名使用形式:数组名(下标下标)引用时下标可以是整型变量、常量或表达式。引用时下标可以是整型变量、常量或表达式。引用不能下标越界引用不能下标越界通常可以通过一个通常可以通过一个ForFor循环处理数组循环处理数组 Dim Numbers(1 To 10)As Integer Dim I As Integer For I=1

40、To 10 Numbers(I)=30 Next I 如果如果I=11怎么办?怎么办?30 30 30 30 30 30 30 30 30 30Dim 数组名(数组名(下界下界 To 上界上界,下界下界 To 上界上界,)As 数据类型数据类型 dim Aa(19,19)As Integer 等价于等价于 dim Aa(1 To 20,1 To 20)As Integer下面将值下面将值3030赋给数组:赋给数组:Dim I As Integer,J As Integer Dim Aa(9,9)As Integer For I=0 To 9 For J=0 To 9 Aa(I,J)=30 Ne

41、xt J Next I 30 30 30 30 30 30 30 30 30 3030 30 30 30 30 30 30 30 30 3030 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30行行列列。申明方法:申明方法:Dim Dim 数组名()数组名()As As 数据类型数据类型 过程中用过程中用ReDimReDim语句改变数组的大小语句改变数组的大小 ReDim 数组名(下标数组名(下标1,下标,下标2)ReDimReDim语句是一个可执行语句,只能出现在过程中,语句是一个可执行语句,只能出现在过程中,并且可以多次使用,

42、改变数组的维数和大小。并且可以多次使用,改变数组的维数和大小。每次使用每次使用ReDimReDim语句都会使原来数组中值丢失。语句都会使原来数组中值丢失。Sub arraychange()Dim x()as interge ReDim x(20)x(20)=30 debug.Print x(20)ReDim x(20,5)x(20,5)=10 debug.Print x(20,5)End sub v 运算符运算符 优先级优先级 例例结果结果1 1 ia29-2 2-ia-3*3 3 ia*ia*ia27/除除3 3 10/ia3.333333333 取整取整4 4 10ia3mod5 5 10

43、 mod ia1+6 6 10+ia13-7 7 ia-10-7例如:例如:5+10 mod 10 9/3+2 2 结果是?结果是?5+10 mod 10 8/2+22 结果又是?结果又是?109字符串运算符有字符串运算符有:、:、+(连接两字符串)(连接两字符串)区别区别 +(连接运算):两个操作数均应为字符串类型(连接运算):两个操作数均应为字符串类型;&(连接运算):两个操作数既可为字符型也可为数值(连接运算):两个操作数既可为字符型也可为数值型型,当是数值型时,系统自动先将其转换为数字字符,当是数值型时,系统自动先将其转换为数字字符,然后进行连接操作。然后进行连接操作。例:例:100

44、+123 结果为结果为 100123 Abc+123 出错出错 100&123 结果为结果为 100123 100&123 结果为结果为 100123 Abc&123 结果为结果为 Abc123 关系运算符关系运算符运算符运算符 含义含义 优先级优先级 实例实例 结果结果 小于小于 所有关系运算所有关系运算优先级相同。优先级相同。低于算术运算低于算术运算的加的加“+”,减,减“-”运算,高运算,高于逻辑非于逻辑非“Not”运算。运算。15+1020 False=小于或等于小于或等于 10 大于大于 1020 False=大于或等于大于或等于 This=That True=等于等于 This=T

45、hat False 不等于不等于 This That True Like 字符串匹配字符串匹配 This Like“*is True Is 对象比较对象比较 逻辑运算符逻辑运算符非非NotNot、与、与AndAnd、或、或OrOr、异或、异或XorXor、逻辑相等、逻辑相等(同或同或)Eqv)Eqv、隐含(逐位比较)隐含(逐位比较)ImpImp NotNot逻辑非为单目运算符(要求一个操作数),其它为双逻辑非为单目运算符(要求一个操作数),其它为双目运算符。目运算符。ABNot AA and BA or B001000110110001110110:false,1:true 表达式中的多种不同

46、类型的运算符的优先级如下:表达式中的多种不同类型的运算符的优先级如下:当一个表达式中出现多种运算符时,首先进行算术运当一个表达式中出现多种运算符时,首先进行算术运算符,接着处理字符串连接运算符,然后处理比较运算符,接着处理字符串连接运算符,然后处理比较运算符,最后处理逻辑运算符,在各类运算中再按照相算符,最后处理逻辑运算符,在各类运算中再按照相应的优先次序进行。应的优先次序进行。可以用括号改变优先顺序,强令表达式的某些部分优可以用括号改变优先顺序,强令表达式的某些部分优先运行。括号内的运算总是优先于括号外的运算。对先运行。括号内的运算总是优先于括号外的运算。对于多重括号,总是由内到外。于多重括

47、号,总是由内到外。VBAVBA中提供了各种函数,利用函数可以完成许多中提供了各种函数,利用函数可以完成许多相关的操作。其使用形式如下:相关的操作。其使用形式如下:.11.取整函数取整函数intint()()和和fix()fix()Fix(N)为截断取整,即去掉小数后的数为截断取整,即去掉小数后的数:Fix(9.59)=9 Int(N)不大于不大于N N的最大整数的最大整数:Int(9.59)=9、Int(-9.59)=-10.22.RndRnd函数返回函数返回0 01 1(包括(包括0 0和不包括和不包括1 1)之间的单精度随机数。)之间的单精度随机数。例:产生例:产生1-1001-100的随

48、机整数:的随机整数:Int(Rnd*100)+1 怎样产生怎样产生NN,MM区间的随机数?区间的随机数?int(N+(M-N+1)*Rnd)例例 Int(100+201*Rnd)随机数随机数100,300.33.类型转换函数类型转换函数 Asc(“Abcd”)值为值为65 只取首字母的只取首字母的AsciiAscii值值 Val(abc123)值为值为0,Val(1.2sa10)值为值为1.2 注意:注意:Val()函数只将最前面的数字字符转换为数值函数只将最前面的数字字符转换为数值。.44.日期函数日期函数 Date()Date():返回系统日期,如返回系统日期,如 2008-03-25 2

49、008-03-25 Time()Time():返回系统时间,如返回系统时间,如 19:30:25 19:30:25 Now()Now():返回系统日期和时间:返回系统日期和时间:2008-03-25 19:30:25 2008-03-25 19:30:25 Weekday(Weekday(时间时间,w),w):返回返回1 17 7的整数,表示星期几。的整数,表示星期几。其中可选参数其中可选参数w w是指定一星期的第一天是星期几的常数。是指定一星期的第一天是星期几的常数。例:例:weekday(#2004-2-29#)=1 weekday(#2004-2-29#)=1 即即2004-2-2920

50、04-2-29为星期为星期天天 若若 weekday(#2004-2-29#,3)=6 weekday(#2004-2-29#,3)=6 即让星期即让星期二为第一天二为第一天 DateAddDateAdd()()、DateDiffDateDiff()()、DatePartDatePart()()及及DateSerialDateSerial()()相关参数相关参数见书见书P216P216v传统流程图中的基本符号传统流程图中的基本符号 处理框起止框I/O框判断框流程线连接点v三种基本结构三种基本结构 语句1语句2顺序结构顺序结构条件语句1语句2YN选择结构选择结构v三种基本结构三种基本结构 b)直

51、到循环直到循环条件语句组YNa)当型循环当型循环条件YN语句组v选择结构选择结构 1.IfThen语句语句(单分支结构单分支结构)If Then 语句块语句块 End If 或或 If Then tyx例例:已知两个数已知两个数x x和和y y,比较它们的,比较它们的大小,使得大小,使得x x大于大于y.y.If xy Then t=x:x=y:y=t End If 或或 If xy Then t=x:x=y:y=t 2.IfThenElse语句语句(双分支结构双分支结构)If Then Else End If If Then Else 例:例:输出输出x,yx,y两个中值较大的一个值。两个中

52、值较大的一个值。IF XY Then Print X Else Print Y End If 单行形式:单行形式:IF XY Then Print X Else Print Y2.IfThenElse语句语句(双分支结构双分支结构)If Then Else End If If Then Else 例:例:输出输出x,yx,y两个中值较大的一个值。两个中值较大的一个值。IF XY Then Print X Else Print Y End If 单行形式:单行形式:IF XY Then Print X Else Print Y 形式形式:If Then ElseIf Then ElseIf Th

53、en Else 语句块语句块 n+1 End IfIf x=90 then Debug.Print 优秀优秀 ElseIf x=80 Then Debug.Print 良好良好 ElseIf x=70 Then Debug.Print 中等中等 ElseIf x=60 Then Debug.Print 及格及格 Else Debug.Print 不及格不及格 End If 例:例:输入一学生成绩,评定其等级。方法是:输入一学生成绩,评定其等级。方法是:90100分为分为“优秀优秀”,8089分为分为“良好良好”,7079分为分为“中等中等”,6069分为分为“及格及格”,60分以为分以为“不合

54、格不合格”Select Case语句(情况语句)语句(情况语句)Select Case 变量或表达式变量或表达式 Case 表达式列表表达式列表1 语句块语句块1 Case 表达式列表表达式列表2 语句块语句块2 Case Else 语句块语句块n+1 End Select 是否满足是否满足:表达式列表可有下面表达式列表可有下面四种形式之一:四种形式之一:表达式表达式 A+5 一组枚举表达式一组枚举表达式(用逗号分隔用逗号分隔)2,4,6,8 表达式表达式1 To 表达式表达式2 60 to 100 Is 关系运算符表达式关系运算符表达式 Is 60数值型或字符串表达式数值型或字符串表达式Se

55、lect Case x Case 90 to 100 Print 优秀优秀 Case 80 to 89 Print 良好良好 Case 70 to 79 Print 中等中等 Case 60 to 69 Print 及格及格“Case 60 to 65 Print“在在60到到65之间之间“Case Else Print 不及格不及格 End Select例:例:使用使用select caseselect case.语句来实现成绩等级评选,程序语句来实现成绩等级评选,程序段如下段如下注意:注意:按照在按照在 Select.Case Select.Case 结构中结构中出现的顺序出现的顺序,将,

56、将表达式表达式的值和的值和 Case Case 语句中的值语句中的值进行进行比较比较。如果如果发现一个匹配项或一发现一个匹配项或一条条 Case Else Case Else 语句,则执行语句,则执行相应的语句块相应的语句块。在任何情况下,随后都会在任何情况下,随后都会将控制转移到将控制转移到 End Select End Select 语语句后面的语句。句后面的语句。选择结构的选择结构的嵌套嵌套 在在IFIF语句的语句的ThenThen分支和分支和ElseElse分分支中可以完整地嵌支中可以完整地嵌套另一套另一IFIF语句或语句或Select CaseSelect Case语句,语句,同样同

57、样Select CaseSelect Case语语句每一个句每一个CaseCase分支分支中都可嵌套另一中都可嵌套另一IFIF语句或另一语句或另一Select Select CaseCase语句。下面是语句。下面是两种正确的嵌套形两种正确的嵌套形式:式:(1)IF Then .if Then Else .End If .Else .IF Then .Else .End If .End IF(2)IF Then .Select Case Case IF Then Else .End If Case.End Select .End IF vVBA的三个选择函数的三个选择函数 IIF函数:函数:II

58、f(条件式、表达示条件式、表达示1,表达示,表达示2)条件为真,返回表达式条件为真,返回表达式1 1的值;为假,返回表达示的值;为假,返回表达示2 2的值的值 如:如:IIf(aIIf(ab,a,bb,a,b)返回返回a,ba,b中较大的值中较大的值 Switch函数函数 switch(条件式条件式1,表达式,表达式1条件式条件式2,表达式,表达式2)条件式与表达式成对出现,如有条件式为真,则返回对应表达式的值条件式与表达式成对出现,如有条件式为真,则返回对应表达式的值 y=switch(x0,1,x=0,0,x0,1)根据根据x的值来为的值来为y赋值。赋值。Choose函数函数 Choose

59、(索引式,选项索引式,选项1,选项选项2,选项选项n)根据索引式的值返回选项列表中的某个值根据索引式的值返回选项列表中的某个值 y=choose(x,1,m,7,n)根据根据x的值来为的值来为y赋值。赋值。v循环结构循环结构 DoLoop:通过通过DoDo来执行循环,有四种形式。其中来执行循环,有四种形式。其中WhileWhile是条件为真时循环是条件为真时循环,UntilUntil是条件为假时循环是条件为假时循环。形式形式1 1、2 2(当型当型循环)循环):Do While|Until 语句块语句块 Exit Do 语句块语句块 Loop 条 件 F T Exit D o 语 句 块 语

60、句 块 当型循环举例当型循环举例Sub Command1.Click()Dim I As Intger I=1 Do While I=20 Print I I=I+1 Loop End SubSub Command1.Click()Dim I As Intger I=1 Do Until I=20 Print I I=I+1 Loop End Sub结果结果I21结果结果I=1v循环结构循环结构 形式形式3、4:(直到直到循环)循环)Do 语句块语句块 Exit Do 语句块语句块 Loop While|Until T F Exit Do 语 句 块 语 句 块 条 件 直到循环举例直到循环举

61、例Sub Command1.Click()Dim I As Intger I=1 Do Print I I=I+1 Loop While I=20 End SubSub Command1.Click()Dim I As Intger I=1 Do Print I I=I+1 Loop Until I=20 End Sub结果结果I=21结果结果I=2While While WendWend 说明:说明:该语句的功能与该语句的功能与Do Do While While .Loop.Loop实现的循实现的循环完全相同。环完全相同。区别在于该语句区别在于该语句中不能出现中不能出现ExitExit语句语

62、句!Sub Command1.Click()Dim I As Intger I=1 While I0 :初值初值=终值终值 步长缺省为步长缺省为1=终值终值=0 :初值终值初值终值 步长步长vForFor循环语句循环语句 (一般用于循环次数已知一般用于循环次数已知)循环次数循环次数)1(步长初值终值Int例例:For I=2 To 13 Step 3 Print I,Next I Print“I=“,I 循环次数?输出结果?循环次数?输出结果?4)1(3213Int循环执行次数循环执行次数 输出输出I的值分别为的值分别为:2 5 8 11 循环结束,出了循环输出为循环结束,出了循环输出为:I=

63、14v循环的嵌套循环的嵌套多重循环结构多重循环结构 如果如果在一个循环在一个循环内完整地包含另一个循内完整地包含另一个循环结构,则称为多重循环结构,则称为多重循环,或循环嵌套环,或循环嵌套,嵌套,嵌套的层数可以根据需要而的层数可以根据需要而定。以下是各种嵌套循定。以下是各种嵌套循环的示例:环的示例:(1)For I=.For J=.Next J .Next I(2)For I=.Do While/Until.Loop .Next I(3)Do While.For J=.Next J .Loop(4)Do While/Until.Do While/Until.Loop .Loop对于循环的嵌套,

64、要对于循环的嵌套,要注意以下事项注意以下事项(重点重点)(1)(1)内循环变量与外循环变量不能同名;内循环变量与外循环变量不能同名;(2)(2)外循环必须完全包含内循环,不能交叉;外循环必须完全包含内循环,不能交叉;(3)(3)不能从循环体外转向循环体内,也不能从外循环转向内循环不能从循环体外转向循环体内,也不能从外循环转向内循环.正正 确确错错 误误 For ii=1 To 10 For ii=1 To 20 Next ii Next ii For ii=1 To 10 For jj=1 To 20 Next jj Next iiFor ii=1 To 10 For jj=1 To 20 N

65、ext ii Next jj For ii=1 To 10 Next ii For ii=1 To 10 Next ii v1.Goto 1.Goto 语句语句 形式形式:GoTo 标号标号|行号行号 作用是无条件地转移到标号或行号指定的那行语句作用是无条件地转移到标号或行号指定的那行语句.由于由于gotogoto语句破坏了程序的逻辑顺序,一般不赞成使用语句破坏了程序的逻辑顺序,一般不赞成使用If Number=1 Then GoTo Line1 Else GoTo Line2 Line1:标号标号1 MyString=Number equals 1“Line2:标号标号2 MyString=

66、Number equals 2v2.Exit 2.Exit 语句语句 Exit 语句用于退出语句用于退出 Do.Loop、For.Next、Function或或Sub代码块。代码块。对应的使用格式为:对应的使用格式为:Exit Do、Exit For、Exit Function、Exit Sub。分别表示退出。分别表示退出DO循环、循环、For循环、函数循环、函数过程、子过程。过程、子过程。例如:例如:下面的例子是使用下面的例子是使用 Exit Exit 语句退出语句退出 For.Next For.Next 循环、循环、Do.Loop Do.Loop 循环及子过程。循环及子过程。Private Sub Form_Click()Dim I%,Num%Do 建立建立无穷循环无穷循环。For I=1 To 100 循环循环 100 次。次。Num=Int(Rnd*100)生成一个生成一个099的随机数。的随机数。Select Case Num Case 10:Exit For 退出退出 For.Next 循环。循环。Case 50:Exit Do 退出退出 Do.Loop 循环。循环。Cas

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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