计算机等考试二模块和部分.ppt_第1页
计算机等考试二模块和部分.ppt_第2页
计算机等考试二模块和部分.ppt_第3页
计算机等考试二模块和部分.ppt_第4页
计算机等考试二模块和部分.ppt_第5页
已阅读5页,还剩266页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

模块与VBA部分 公共计算机教学部2012 03 主讲人 赵洪帅 参考教材 第8章模块 本章主要学习Access模块的基础概念 在熟悉VB编程窗口和VB语法特点的基础上 学习模块的创建方法 学会VBA编程基础 掌握VBA程序结构及编写程序的基本方法 学会过程和自定义函数的应用 第8章模块 宏 借助宏对象可以处理一些简单的操作 如打开和关闭窗体 报表等 对于复杂条件和循环等结构则无能为力 模块 解决一些实际开发活动中的复杂应用 2008 04 30 在Access中 如果要处理具有复杂条件或循环结构的操作 则应该使用的对象是A 窗体B 模块C 宏D 报表 8 1模块的基本概念 模块是Access系统中的一个重要对象 它以VBA VisualBasicApplication 语言为基础编写 以函数过程 Function 和子过程 Sub 为单元的集合方式存储 在Access中 模块分为类模块和标准模块 类模块 窗体和报表模块都属于类模块 它们从属于各自的窗体和报表 标准模块 一般用于存放供其他Access数据库对象使用的公共过程 8 2创建模块 过程是模块的单元组成 由VBA代码编写而成 过程分两种类型 Sub子过程和Function函数过程 Sub过程 又称子过程 执行一系列操作 无返回值 格式 Sub过程名 程序代码 EndSub引用 直接引用过程名或使用关键字Call 举例 创建模块之Sub过程 PrivateSubCommand4 Click DimxAsIntegerDimyAsIntegerx Text0 把文本框0的值赋值给xy Text2 把文本框2的值赋值给yCallswap x y 调用过程swap 或者使用格式swapx yText0 x 把交换后的x值重新赋值给文本框0Text2 y 把交换后的y值重新赋值给文本框2EndSub PublicSubswap aAsInteger bAsInteger 定义一个过程 实现2个数的交换DimtempAsInteger 定义一个临时变量temp a 把a的值赋值给tempa b 把b的值赋值给ab temp 把temp的值赋值给bEndSub 8 2创建模块 2 Function过程又称函数过程 执行一系列操作 有返回值 格式 Function过程名 程序代码 EndFunction函数过程不能使用Call来调用 需要直接引用函数过程名 举例 创建模块之Function过程 FunctionFirstOfNextMonth 定义一个函数 返回下一个月的第一天FirstOfNextMonth DateSerial Year Now Month Now 1 1 EndFunction 引用 等级考试2006年9月 29 Sub过程与Function过程最根本的区别是A Sub过程的过程名不能返回值 而Function过程能通过过程名返回值B Sub过程可以使用Call语句或直接使用过程名调用 而Function过程不可以C 两种过程参数的传递方式不同D Function过程可以有参数 Sub过程不可以 8 3VBA程序设计基础 VBA是MicrosoftOffice套装软件的内置编程语言 其语法与VisualBasic编程语言互相兼容 在Access程序设计中 当某些操作不能用其他Access对象实现或实现起来很困难时 就可以利用VBA语言编写代码 完成这些复杂任务 8 3 1面向对象程序设计的基本概念 1 Access对象一个对象就是一个实体 例如一辆自行车或一个人 每种对象都具有一些属性以相互区分 Access根对象有6个 如表所示 2 对象的属性在程序代码中 则通过赋值的方式来设置对象的属性 其格式为 对象 属性 属性值例如 Label1 Caption 学生成绩表 3 对象的事件对于对象而言 事件就是发生在该对象上的事情或消息 系统为每个对象预先定义好了一系列的事件 例如 Click 单击 DblClick 双击 等 例如 PrivateSubCommand1 Click Text1 FontSize 14EndSub 2008 9 10 直接在属性窗口设置对象的属性 属于 静态 设置方法 在代码窗口中由VBA代码设置对象的属性叫做 10 设置方法 4 对象的方法 方法是一些系统封装起来的通用过程和函数 以方便用户的调用 对象方法的调用格式为 对象 方法 参数名表 例如 Debug Print2 3除窗体 控件的SetFocus 获得控制焦点 Requery 更新数据 等方法外 用的最多是DoCmd对象的一些方法 使用DoCmd对象的方法 可以在VBA中运行Access的操作 如执行打开窗体 OpenForm 关闭窗体 Close SelectObject 指定数据库对象 等 2005 04 28 能被 对象所识别的动作 和 对象可执行的活动 分别称为对象的A 方法和事件B 事件和方法C 事件和属性D 过程和方法 8 3 2VBA编程环境 VBE界面 VBA的编程环境 称为VBE VisualBasicEditor 是编写和调试程序的重要环境 一 进入VBE编程环境1 在窗体或报表中进入VBE设计工具栏上的代码按钮右键 事件生成器控件 在属性表中选择事件 单击 按钮 在出现的 选择生成器 对话框中 选择 代码生成器 打开VBE环境 2 在窗体或报表外进入VBEALT F11单击 工具 菜单 宏 命令 VisualBasic编辑器 单击模块对象 然后单击数据库窗体的新建按钮 二 VBA编程环境 VBE 工具栏工程资源管理器窗口属性窗口代码窗口 立即窗口 立即窗口在VBE环境中 单击 视图 菜单中的 立即窗口 即可打开立即窗口 3 创建程序有几个主要步骤 1 创建应用程序界面 2 设置属性 3 编写事件代码 4 运行和调试5 保存文件 例一 创建一个简单应用程序 该应用程序由一个文本框和一个命令按钮组成 单击命令按钮 文本框中会出现 Hello world 消息 PrivateSubcmd1 Click txt1 Value HelloWorld EndSubPrivateSubForm Load txt1 Value txt1 FontSize 20txt1 FontItalic Truetxt1 FontBold Truetxt1 BackColor vbBluecmd1 FontSize 20cmd1 FontBold TrueMe Caption 程序设计之一 EndSub 例二 编写一个简单程序 要求 在窗体上创建一个文本框控件 三个命令按钮控件 命令按钮的标题分别设置为 显示 隐藏 和 关闭 单击 隐藏 按钮后文本框消失 单击 显示 按钮显示出文本框 单击 关闭 结束程序执行 PrivateSubcmd1 Click 隐藏txt1 Visible FalseEndSubPrivateSubcmd3 Click 显示txt1 Visible TrueEndSub PrivateSubcmd2 Click DoCmd CloseEndSubPrivateSubForm Load txt1 Value 欢迎使用VB创建程序 txt1 BackColor vbBluetxt1 ForeColor vbWhitetxt1 FontSize 20Me Caption 程序设计之二 txt1 Visible FalseEndSub 有如下窗体 窗体的名称为fmTest 窗体中有一个标签和一个命令按钮 名称分别为Label1和bChange 22 在 窗体视图 显示该窗体时 要求在单击命令按钮后标签上显示的文字颜色变为红色 以下能实现该操作的语句是A label1 ForeColor 255B bChange ForeColor 255C label1 ForeColor 255 D bChange ForeColor 255 23 若将窗体的标题设置为 改变文字显示颜色 应使用的语句是A Me 改变文字显示颜色 B Me Caption 改变文字显示颜色 C Me text 改变文字显示颜色 D Me Name 改变文字显示颜色 2005 04 34 窗体上添加有3个命令按钮 分别命名为Command1 Command2和Command3 编写Command1的单击事件过程 完成的功能为 当单击按钮Command1时 按钮Command2可用 按钮Command3不可见 以下正确的是 8 3 3VBA编程基础 常量 变量 运算符和表达式 数据类型 说明 1 表示空字符串 而 表示有一个空格的字符串 注意字符串中空格是有效字符 2 VisualBasic中的字符串分为变长字符串和定长字符串 2007 9 11 在VBA中双精度的类型标识是 11 二 变量 变量是指程序运行时值会发生变化的数据 在VBA代码中 变量名的命名有如下规定 最长只能有255个字符 必须用字母开头 可以包含字母 数字或下划线字符 不能包含标点符号或空格等 不能是VisualBasic关键字 关键字是那些在VisualBasic中用作语言的一部分的词 包括预定义语句 如If和Loop 函数 如Len和Abs 和运算符 如Or和Mod 2010年9月 27 下列变量名中 合法的是A 4AB A 1C ABC 1D private 使用变量前 应首先定义所用到的变量 包括变量名和类型 使系统分配相应的内存空间 并确定该空间可存储的数据类型 所有变量都具有名字和类型 在VB中可以用类型说明语句或隐式说明来定义变量 1 类型说明语句格式 说明符变量名 As类型 说明符是说明语句的关键字 它可以是Dim Private Public Static 主要介绍Dim语句 例如 DimaasintegerDimbaslongDimcassingle 上面的3个语句可以写为 Dimaasinteger baslong cassingle也可以用类型符来定义变量 例如上面语句写成 Dima b c 作用是一样的 缺省 As类型 为可变类型 另外 若把多个变量都定义成同一类型 例如 把X Y Z都定义成双精度型 必须写成 DimXasdouble Yasdouble Zasdouble如果写成 Dimx y zasdouble则x y定义成可变类型 z定义成双精度型 2 隐式说明没有直接定义 借用一个值指定给变量名的方式来建立的变量称为隐含型变量 例 s1 123这种变量名称后没有附加类型说明字符来指明的隐含型变量的数据类型为默认的Variant类型 若在命令名称后加附加类型说明则指定了改变量的数据类型 例 s1 123s1则为整形变量 2004 9 34 在VBA中 如果没有显式声明或用符号来定义变量的数据类型 变量的默认数据类型为A BooleanB IntC StringD Variant 2008 4 10 在VBA中变体类型的类型标识是 10 字符串变量定义 Dims1AsString s2AsString s3AsStrings1 世界你好 s2 Hello s3 s1 s2 例如 Dims1AsString 把s1定义为变长字符串 Dims2AsString 10 定长字符串 长度为10个字节 定长字符串与变长字符串 用AsString可以定义变长字符串 也可以定义定长字符串 2007 9 33 在窗体中有一个标签Lb1和一个命令按钮Command1 事件代码如下 OptionCompareDatabaseDimaAsString 10PrivateSubCommand1 Click a 1234 b Len a Me Lb1 Caption bEndSub打开窗体后单击命令按钮 窗体中显示的内容是A 4B 5C 10D 40 VisualBasic允许用户不声明变量而直接使用 就是默认声明 所有默认声明的变量都是Variant数据类型 例如 PrivateSubForm Click Total 0a 10 b 20Total a bPrint Total TotalEndSub 默认声明与OptionExplicit语句 良好的编程习惯都应该是 先声明变量 后使用变量 这样做可以提高程序的效率 同时也使程序易于调试 VisualBasic中可以强制显式声明 可以在窗体模块 标准模块和类模块的通用声明段中加入语句 OptionExplicit表示强制变量必须先定义才能使用 默认声明与OptionExplicit语句 4 变量的作用域变量的范围确定了能够使用该变量的那部分代码 一旦超出了作用范围 就不能引用它的内容 变量的作用范围是在模块中声明确定的 声明变量时可以使用三种不同的作用范围 Public Private Static和Dim 变量的作用域决定了这个变量是被一个过程使用还是一个模块中的所有过程使用 还是被数据库中的所有过程使用 1 过程内部使用的变量过程级变量只有在声明它们的过程中才能被识别 也称它们为局部变量 用Dim或者Static关键字来声明它们 例如 DimV1AsInteger或StaticV1AsInteger在整个应用程序运行时 用Static声明的局部变量中的值一直存在 而用Dim声明的变量只在过程执行期间才存在 2 模块内部使用的变量模块级变量对该模块的所有过程都可用 但对其他模块的代码不可用 可在模块顶部的声明段用Private关键字声明变量 从而建立模块级变量 例如 PrivateV1AsInteger在模块级 Private和Dim之间没有什么区别 但Private更好些 因为很容易把它和Public区别开来 使代码更容易理解 3 所有模块使用的变量为了使模块级的变量在其他模块也有效 可用Public关键字声明变量 公用变量中的值可用于应用程序的所有过程 和所有模块级变量一样 也在模块顶部的声明来声明公用变量 例如 PublicV1AsInteger用户不能在过程中声明公用变量 而在模块中声明的变量可用于所有模块 2008 9 30 在Access中 如果变量定义在模块的过程内部 当程序代码执行时才可见 则这种变量的作用域为A 程序范围B 全局范围C 模块范围D 局部范围 2006 9 35 在窗体中添加一个名称为Command1的命令按钮 然后编写如下程序 PublicxAsIntegerPrivateSubCommand1 Click x 10Calls1Calls2MsgBoxxEndSubPrivateSubs1 x x 20EndSubPrivateSubs2 DimxAsIntegerx x 20EndSub窗体打开运行后 单击命令按钮 则消息框的输出结果为A 10B 30C 40D 50 2006 9 11 在窗体中添加一个命令按钮 名称为Command1 然后编写如下代码 PrivateSubCommand1 Click StaticbAsIntegerb b 1EndSub窗体打开运行后 三次单击命令按钮后 变量b的值是 三 数据类型之间的转换P257 例 下列程序中将双精度型变量转换成字符串型 DimS1AsDoubleDimS2AsStringS1 437 327 S1变量赋值为437 327S2 CStr S1 S1变量值转换为字符 437 327 四 用户自定义的数据类型 用户自定义数据类型可以在Type EndType关键字间定义 定义格式如下 Type自定义类型名元素名As类型 元素名As类型 EndType当需要使用一个变量来保存包含不同数据类型字段的数据表的一条或多条记录时 用户自定义数据类型就特别有用 定义一个学生信息数据类型 TypeNewStudenttxtNoAsString 7 学号 7位定长字符串txtNameAsstring 姓名 变长字符串txtSexAsString 1 性别 1位定长字符串txtAgeAsInteger 年龄 整型EndType 使用自定义数据类型 DimNewStudasNewStudent 定义一个学生信息类型变量NewStudNewStud txtNo 980306 NewStud txtName 冯伟 NewStud txtSex 女 NewStud txtAge 20可以用关键字With简化程序中的重复部分 WithNewStud txtNo 980306 txtName 冯伟 txtSex 女 txtAge 20EndWith 2007年4月 13 有如下用户定义类型及操作语句 TypeStudent 定义一个新的数据类型为StudentSNoAsStringSNameAsStringSAgeAsIntegerEndTypeDimStuAsStudent 定义一个变量Stu 数据类型为StudentWithStu 为新的变量Stu赋值 SNo 200609001 SName 陈果果 SAge 19EndWith执行MsgBoxStu SAge后 消息框输出结果是 13 五 数组 数组是在有规则的结构中包含一种数据类型的一组数据 也称作为数组元素变量 数组变量由变量名和数组下标构成 通常用Dim语句来定义数组 定义格式如下 Dim数组名 下标下限to 下标上限 缺省情况下 下标下限为0VBA中 在模块的声明部分使用OptionBase1语句 可以将数组的默认下标下限由0改为1 例如 Dimy 5 AsInteger定义了一个一维数组 该数组的名字为y 类型为Integer 占据6个 0 5 整型变量的空间 y 0 y 1 y 2 y 3 y 4 y 5 二维数组例如 DimT 2 3 AsInteger定义了一个二维数组 名字为T 类型为Integer 该数组有3行 0 2 4列 0 3 占据12 3 4 个整型变量的空间 如图所示 2004 9 33 定义了二维数组A 2to5 5 该数组的元素个数为A 20B 24C 25D 36 2010 3 29 在模块的声明部分使用 OptionBase1 语句 然后定义二维数组A 2to5 5 则该数组的元素个数为A 20B 24C 25D 36 2006 4 10 在使用Dim语句定义数组时 在缺省情况下数组下标的下限为 2008 4 29 语句DimNewArray 10 AsInteger的含义是A 定义了一个整形变量且初值为10B 定义了10个整数构成的数组C 定义了11个整数构成的数组D 将数组的第10个元素设置为整型 2009 09 31 下列数组声明语句中 正确的是A DimA 3 4 AsIntegerB DimA 3 4 AsIntegerC DimA 3 4 AsIntegerD DimA 3 4 AsInteger 六 数据库对象变量 Access建立的数据库对象及其属性 均可被看成是VBA程序代码中的变量及其指定的值来加以引用 例如 Access中窗体与报表对象的引用格式为 Forms 窗体名称 控件名称 属性名称 Reports 报表名称 控件名称 属性名称 七 变量标识命名法则 Hungarian符号法在编写VBA程序代码时 会用到大量的变量名称和不同的数据类型 对于控件对象 可以用VBA的Set关键字将每个命名的控件对象指定为一个变量名称 目前 VB和VBA均推荐使用Hungarian符号法作为命名法则 该方法也被广泛用在C和C 等一些程序中 Hungarian符号法使用一组代表数据类型的码 用小写字母作为变量的第一个字符 例如 代表文本框的字首码是txt 那么 上例中的文本框变量名为txtName 8 符号常量 在VBA编程过程中 对于一些使用频率较高的常量 可以用符一号常量形式来表示 符号常量使用关键字Const来定义 格式如下 Const符号常量名称 常量值若是在模块的声明区中定义符号常量 则建立一个所有模块都可以用的全局符号常量 一般是Const前加Global或Public关键字 符号常量的优点是 见名知义 一改全改一次定义 到处使用 9 系统常量 Access系统内部包含若干个启动时就建立的系统常量 有True False Yes No On Off和Null等 在编码时可以直接使用 2004 09 35 使用VBA的逻辑值进行算术运算时 True值被处理为A 1B 0C 1D 任意值 10 内部常量 VBA提供了一些预定义的内部符号常量 它们主要作为DoCmd命令语句中的参数 内部常量以前缀ac开头 可以通过在 对象浏览器 窗口中 选择 工程 库 列表的Access项 再在 类 列表中选择 全局 选项 Access的内部的常量就可以列出了 11 运算符 在VBA编程语言中 提供了许多运算符来完成各种形式的运算和处理 根据运算不同 可以分成4种类型的运算符 算术运算符 关系运算符 逻辑运算符和连接运算符 运算符 算数运算符 指数 取负 乘法 Mod 取余 浮点除法 整数除法 加法 减法 说明 作为取负时是单目运算符浮点除法 执行标准除法 结果为浮点数整数除法 结果为整数 整数除法的操作数一般为整数 若带有小数则四舍五入成整数后再运算 运算结果若为小数则截断取整 Mod 如果操作数是小数 系统会四舍五入变成整数后再运算 如果被除数是负数 余数也是负数 反之 如果被除数是正数 余数也是正数 举例说明整除和求模 a 10 20 4 9b 9 3 2c 12 7mod 5d 12mod5 2005 9 31 下列逻辑表达式中 能正确表示条件 x和y都是奇数 的是A xMod2 1OryMod2 1B xMod2 0OryMod2 0C xMod2 1AndyMod2 1D xMod2 0AndyMod2 0 算术运算符 例 5 2 10mod10 9 3 2 2结果是 11 字符串连接 字符串运算符有 功能是字符串连接例如 ABCD EFGHI 结果为 ABCDEFGHI VB 程序设计教程 结果为 VB程序设计教程 说明 当连接符两旁的操作量都为字符串时 上述两个连接符等价 它们区别是 连接运算 两个操作数均应为字符串类型 连接运算 两个操作数既可为字符型也可为数值型 当是数值型时 系统自动先将其转换为数字符 然后进行连接操作 字符串连接 例 100 123 Abc 123 100 123100 123 Abc 123 Abc 123 进行字符连接时 尽量使用 使用运算符 时 变量与运算符 之间应加一个空格 结果为 100123 出错 结果为 100123 结果为 100123 结果为 Abc123 结果为 Abc123 关系运算符 比较两个运算量之间的关系 关系表达式的运算结果为逻辑量 若关系成立 结果为True 若关系不成立 结果为False VB中的关系运算符如下表所示 1表示 真 0表示 假 关系运算的规则如下 1 当两个操作式均为数值型 按数值大小比较 2 字符串比较 则按字符的ASCII码值从左到右一一比较 直到出现不同的字符为止 例 ABCDE ABRA 结果为False 关系运算符 说明 数学中判断X是否在区间 a b 时 习惯上写成a x b 但在VisualBasic中不能写成 a x b应写成 a xAndx b ASCII码表 逻辑运算符 1 优先级不相同 Not And Or 2 可用来描述VB中的复杂关系表达式 例如 数学上表示某个数在某个区域时用表达式 10 X 10AndX 20如果写成如下形式将是错误的 10 x 20 12 表达式和优先级 在一个表达式中进行若干操作时 每一部分都会按预先确定的顺序进行计算求解 称这个顺序为运算符的优先顺序 在表达式中 当运算符不止一种时 要先处理算术运算符 接着处理比较运算符 然后再处理逻辑运算符 所有比较运算符的优先顺序都相同 也就是说 要按它们出现的顺序从左到右进行处理而算术运算符和逻辑运算符则必须按优先顺序进行处理 优先级 2006 4 30 VBA表达式3 3 3 3的输出结果是A 0B 1C 3D 9 2004 9 32 以下关于VBA运算符优先级比较 正确的是A 算术运算符 逻辑运算符 比较运算符B 逻辑运算符 比较运算符 算术运算符C 算术运算符 比较运算符 逻辑运算符D 以上均是错误的 13 常用标准函数 在VBA中 除在模块创建中可以定义子过程与函数过程完成特定功能外 又提供了近百个内置的标准函数 可以方便完成许多操作 标准函数一般用于表达式中 有的能和语句一样使用 其使用形式如下 函数名 参数1 参数2 参数3 参数4 参数5 其中 函数名必不可少 函数的参数放在函数名后的圆括号中 参数可以是常量 变量或表达式 可以有一个或多个 少数函数为无参函数 1数学函数 绝对值函数Abs 取整函数Int Fix 自然指数函数Exp 自然对数函数Log 开平方函数Sqr 三角函数Sin Cos Tan 产生随机数函数Rnd 取整函数 取整函数int 返回数值表达式的整数部分Fix 返回数值表达式的整数部分参数为正值时 两者相同 参数为负数时 Int返回小于等于参数值的第一个负数 而Fix返回大于等于参数值的第一个负数 Int 3 25 4Fix 3 25 3 2008 4 8 Int 3 25 的结果是 8 2008 9 31 表达式Fix 3 25 和Fix 3 75 的结果分别是A 3 3B 4 3C 3 4D 4 4 2010 3 28 如果x是一个正的实数 保留两位小数 将千分位四舍五入的表达式是A 0 01 Int x 0 05 B 0 01 Int 100 x 0 005 C 0 01 Int x 0 005 D 0 01 Int 100 x 0 05 2009 9 10 要将正实数x保留两位小数 若采用Int函数完成 则表达式为 10 2005 4 33 以下程序段运行后 消息框的输出结果是a sqr 3 b sqr 2 c a bMsgboxc 2A 1B 1C 2D 出错 随机函数RndRnd返回 0 1 即包括0 但不包括1 之间的双精度随机数 Rnd 100Int Rnd 100 Int Rnd 100 1Int Rnd 6 1 随机函数 0 100 之间的双精度数 0 99 之间的整数 1 100 之间的整数 1 6 之间的整数 NCRE考题 28 在如下语句s Int 100 Rnd 执行完毕后 s的值是A 0 99 的随机整数B 0 100 的随机整数C 1 99 的随机整数D 1 100 的随机整数 2字符串函数 字符串检索函数InStr Start Compare 字符串长度检索函数Len 或 字符串截取函数Left Right Mid N2 生成空格字符串函数Space 大小写转换函数Ucase Lcase 删除空格函数LTrim RTrim Trim 字符串检索函数 InStr Start Compare 功能 检索子字符串Str2在字符串Str1中最早出现的位置 返回一整型数 Start为可选参数 为数值式 设置检索的起始位置 如省略 从第一个字符开始检索 如包含Null值 发生错误 Compare也为可选参数 指定字符串比较方法 值可以为1 2和0 缺省 指定0做二进制比较 指定1做不区分大小写的文本比较 指定2来做基于数据库中包含信息的比较 如值为Null 会发生错误 如指定了Compare参数 则Start一定要有参数 Instr函数举例 str1 98765 str2 65 s Instr str1 str2 s Instr 3 aSsiAB a 1 2008 09 22 在下列查询语句中 与SelectTAB1 FROMTAB1WHEREInstr 简历 篮球 0功能相同的语句是A SelectTAB1 FROMTAB1WHERETAB1 简历Like 篮球 B SelectTAB1 FROMTAB1WHERETAB1 简历Like 篮球 C SelectTAB1 FROMTAB1WHERETAB1 简历Like 篮球 D SelectTAB1 FROMTAB1WHERETAB1 简历Like 篮球 字符串处理函数 1 删除空格函数Ltrim C 求字符串C去掉左边空格后的字符串 Rtrim C 求字符串C去掉右边空格后的字符串 Trim C 求删除前导和尾随空格符后的字符串 如 x Ltrim abc x abc x Rtrim abc x abc x Trim abc x abc 字符串处理函数 2 取子串函数Left C N 求以字符串C的左边N个字符够成的子串 Right C N 求以字符串C的右边N个字符够成的子串 Mid x m n 返回x从第m个字符起的n个字符所组成的字符串 如 x Left abcdef 2 x ab x Right abcdef 2 x ef x Mid abcdef 2 3 x bcd 2006 4 8 函数Right 计算机等级考试 4 的执行结果是 2008 4 28 从字符串s中的第2个字符开始获取4个字符的子字符串函数是A Mid s 2 4 B Left s 2 4 C Right s 2 4 D Left s 4 字符串处理函数 3 Len x 返回字符串x的长度 如果x不是字符串 则返回x所占存储空间的字节数 例1 Len Thisisabook 15 例2 DimstrAsString 10Str 123 Len str 2007 4 11 在VBA编程中检测字符串长度的函数名是 11 字符串处理函数 例 Left ABCDEFG 3 Right ABCDEFG 3 Trim Abcd Len ABCDEFG Mid ABCDEFG 2 3 ABC EFG Abcd 返回值 7 BCD 3日期 时间函数 获取系统日期和时间DateTimeNow截取日期分量函数Year Month Day 1 Year D 求日期的年号 2 Date 求系统当前日期 3 Time 求系统当前时间 4 Now 求系统当前时间 日期处理函数 例如 Form1 Caption Now DateSerial函数 DateSerial函数是返回指定年月日的日期 格式为DateSerial 表达式1 表达式2 表达式3 注意 每个参数的取值范围应该是可接受的 即日的取值范围应在1 31之间 而月的取值范围应该在1 12之间 此外 当任何一个参数的取值范围超出可接受的范围时 它会适时进位到下一个较大的时间单位 例如 如果指定了35天 则这个天数被解释成一个月加上多出来的日数 多出来的日数将由其年份与月份来决定 DateSerial函数 例如 D dateserial 2008 2 29 D dateserial 2008 1 8 2 0 给定日期DD 可以计算该日期当月最大天数的正确表达式是A Day DD B Day DateSerial Year DD Month DD day DD C Day DateSerial Year DD Month DD 0 D Day DateSerial Year DD Month DD 1 0 评析 Day函数是返回日期表达式日期的整数 Year函数是返回日期表达式年份的整数 Month函数是返回日期表达式月份的整数 DateSerial函数是返回指定年月日的日期 格式为DateSerial 表达式1 表达式2 表达式3 如果表达式3为0 则DateSerial返回表达式2所写前一个月的最后一天的日期 要返回当月的最后一天的日期 表达式2就要等于Month DD 1 所以本题答案是D DateDiff函数 功能 返回Variant Long 的值 表示两个指定日期间的时间间隔数目 语法 DateDiff interval date1 date2 DateDiff函数语法中有下列命名参数 DateDiff函数 interval参数的设定值如下 NCRE2010 3 34 在窗体上有一个命令按钮Command1 编写事件代码如下 PrivateSubCommand1 Click Dimd1AsDateDimd2AsDated1 12 25 2009 d2 1 5 2010 MsgBoxDateDiff ww d1 d2 EndSub打开窗体运行后 单击命令按钮 消息框中输出的结果是A 1B 2C 10D 11 4类型转换函数 字符串转换字符代码函数Asc 字符代码转换字符函数Chr 数字转换成字符串函数Str 字符串转换成数字函数Val 字符串转换字符代码函数Asc 功能 返回首字符的ASCII码例如 s asc abcde 返回97字符代码转换字符函数Chr 功能 返回与字符代码相关的字符s chr 97 返回as chr 13 返回回车符 数字转换成字符串函数Str 功能 将数值表达式值转换成字符串例如 s str 99 返回 99 有一前导空格s str 6 返回 6 注释 当一个数字转成字符串时 总会在前头保留一空格来表示正负 表达式值为正 返回的字符串包含一前导空格表示一正号 2006 9 32 在窗体上添加一个命令按钮 名为Command1 和一个文本框 名为Text1 并在命令按钮中编写如下事件代码 PrivateSubCommand1 Click m 2 17n Len Str m Space 5 Me Text1 nEndSub打开窗体运行后 单击命令按钮 在文本框中显示A 5B 8C 9D 10 字符串转换成数字函数Val 功能 将数字字符串转换成数值型数字 注释 数字串转换时可自动将字符串中的空格 制表符和换行符去掉 当遇到它不能识别为数字的第一个字符时 停止读入字符串 当字符串不是以数字开头时 函数返回0 例如 s val 16 返回16s val 345 返回345s val 76af89 返回76 2004 09 14 在名为 Form1 的窗体上添加三个文本框和一个命令按钮 其名称分别为 Textl Text2 Text3 和 Commandl 然后编写如下两个事件过程 PrivateSubCommand1 Click Text3 Text1 Text2EndSubPrivateSubForm1 Load Text1 Text2 Text3 EndSub打开窗体Form1后 在第一个文本框 Text1 和第二个文本框 Text2 中分别输入5和7 然后单击命令按钮Command1 则文本框 Text3 中显示的内容为 14 2004 9 13 执行下面的程序 消息框里显示的结果是 13 PrivateSubForm Click DimStrAsString KAsIntegerStr ab Fork Len Str To1Step 1Str Str Chr Asc Mid Str k 1 k NextkMsgBoxStrEndSub 8 3 4VBA程序流程控制语句 一个语句是能够完成某项操作的一条命令 VBA程序的功能就是由大量的语句串命令构成 VBA程序语句按照其功能不同分成两大类型 一是声明语句 用于给变量 常量或过程定义命名 二是执行语句 用于执行赋值操作 调用过程 实现各种流程控制 执行语句分为3种结构 顺序结构 按照语句顺序顺次执行 分支结构 又称为选择结构 根据条件选择执行路径 循环结构 重复执行某一段程序语句 三种基本结构 1 顺序2 选择3 循环 1 程序语句书写p269 通常将一个语句写在一行 语句较长 一行写不下时 可以用续行符 将语句连续写在下一行 可以通过冒号 将几个语句分隔写在一行中 例如 mycount 10 x 7 y z 5 mycount 10 x 7 y z 5 Text1 Value Hello Text1 BackColor 255 2006年4月 29 VBA程序的多条语句可以写在一行中 其分隔符必须使用符号A B C D 2 注释语句 一个好的程序一般都有注释语句 这对程序的维护有很大的好处 在VBA程序中 注释可以通过以下两种形式实现 注释内容 可以在代码后面 或Rem注释内容 必须独立一行 二 声明语句 声明语句用于命名和定义常量 变量 数组和过程 在定义了这些内容的同时 也定义了它们的生命周期与作用范围 这取决于定义位置 局部 模块或全局 和使用的关键字 Dim Public Static或Global等 三 赋值语句 赋值语句是为变量指定一个值或表达式 通常以等号 连接 其使用格式为 Let 变量名 值或表达式例如 DimtxtAgeAsIntegertxtAge 21定义了一个整型变量txtAge 并赋值为21 四 标号和GoTo语句 GoTo语句用于实现无条件转移 使用格式为 GoTo标号 程序运行到此结构 会无条件转移到其后的 标号 位置 并从那里继续执行 GoTo语句使用时 标号 位置必须首先在程序中定义好 否则转移无法实现 格式 GoTo标号例 s 0Fori 1to1000s s iIfs 5000thenGoTomlineNextiMline Debug prints 顺序语句2004 09 12 执行下面的程序段后 b的值为 12 a 5b 7a a bb a ba a b 五 条件语句 根据条件表达式的值来选择程序运行语句 主要有以下两个语句 1 If Then EndIf语句 2 SelectCase EndSelect语句 除了这两种条件语句外 VBA还提供了3个函数来完成相应选择操作 1 IIf函数 调用格式为 IIf 条件式 表达式1 表达式2 该函数根据 条件式 的值来决定函数返回值 2 Switch函数 调用格式为 Switch 条件式1 表达式1 条件式2 表达式2 条件式3 表达式3 条件式n 表达式n 该函数是分别根据 条件1 条件2 直至 条件n 的值来决定函数的返回值 3 Choose函数 调用格式为 Choose 索引式1 选项1 选项2 选项n 该函数式根据 索引式 的值来返回选项列表中的某个值 条件IIf函数 条件IIf 功能 该函数是根据 条件式 的值来决定函数返回值 条件式 的值为 真 True 函数返回 表达式1 的值 条件式 的值为 假 False 函数返回 表达式2 的值 例如 将变量a和b中值大的量存放在变量Max中 Max IIf a b a b 开关 Switch函数 Switch 功能 该函数将返回与条件式列表中最先为True的那个条件表达式所对应的表达式的值 例如 根据变量x的值来为变量y赋值 x 3y Switch x 0 1 x 0 0 x 0 1 y的值将为 1 选择Choose函数 选择Choose 该函数是根据 索引式 的值来返回选项表中的某个值 当 索引式 值为1 函数返回 选项1 的值 索引式 值为2 函数返回 选项2 的值 以此类推 例如 根据变量x的值来为变量y赋值 x 2 m 5y Choose x 5 m 1 m y的值将为6 2009 03 33 下列四个选项中 不是VBA的条件函数的是A ChooseB IfC IIfD Switch If Then EndIf语句 If条件then语句块1 Else语句块2 EndIf 例 火车站行李费的收费标准是50kg以内 包括50kg 0 20 kg 超过部分0 50 kg 编写程序 要求根据输入的任意重量 计算出应付的行李费 PrivateSubcmd1 Click DimwassingleDimPassinglew Txt1 ValueIfw 50Thenp w 50 0 5 50 0 2Elsep w 0 2EndIfTxt2 Value pEndSub 1 单行结构条件语句 格式 If条件Thenthen部分 已知两个数x和y 比较它们的大小 较大的数放入x中 块结构 Ifx yThent xx yy tEndIf单行结构 Ifx yThent x x y y t NCRE考题 在窗体中添加一个名称为Command1的命令按钮 然后编写如下事件代码 PrivateSubCommand1 Click A 75IfA 60ThenI 1IfA 70ThenI 2IfA 80ThenI 3IfA 90ThenI 4MsgBoxIEndSub窗体打开运行后 单击命令按钮 则消息框的输出结果是 ElseIf语句 格式 If条件1then语句块1ElseIf条件2then语句块2 Else语句块n 1 EndIf 功能 1 依次判断条件 如果找到一个满足的条件 则执行其下面的语句块 然后跳过EndIf 执行后面的程序 2 如果所列出的条件都不满足 则执行Else语句后面的语句块 如果所列出的条件都不满足 又没有Else子句 则直接跳过EndIf 不执行任何语句块 举例 例 输入一个学生的一门课分数x 百分制 当x 90时 输出 优秀 当80 x 90时 输出 良好 当70 x 80时 输出 中 当60 x 70时 输出 及格 当x 60时 输出 不及格 程序代码如下 PrivateSubCmd1 Click Dimscore score val Txt1 Value Ifscore 90ThenTxt2 Value 优秀 ElseIfscore 80ThenTxt2 Value 良好 ElseIfscore 70ThenTxt2 Value 中 ElseIfscore 60ThenTxt2 Value 及格 ElseTxt2 Value 不及格 EndIfEndSub NCRE27 13 在窗体中使用一个文本框 名为num1 接受输入值 有一个命令按钮run13 事件代码如下 PrivateSubrun13 Click IfMe num1 60Thenresult 及格 ElseIfMe num1 70Thenresult 通过 ElseIfMe num1 80Thenresult 合格 EndIfMsgBoxresultEndSub打开窗体后 若通过文本框输入的值为85 单击命令按钮 输出结果是 13 2007年4月考题 31 在窗体中添加一个名称为Command1的命令按钮 然后编写如下事件代码 PrivateSubCommand1 Click a 75Ifa 60Thenk 1ElseIfa 70Thenk 2ElseIfa 80Thenk 3ElseIfa 90Thenk 4EndIfMsgBoxkEndSub窗体打开运行后 单击命令按钮 则消息框的输出结果是A 1B 2C 3D 4 多分支结构 SelectCase语句 当对一个表达式的不同取值情况作不同处理时 用ElseIf语句程序结构显得较为杂乱 而用SelectCase语句将使程序的结构更清晰 SelectCase语句又称为情况语句 多分支结构 格式 SelectCase变量或表达式Case表达式列表1语句块1Case表达式列表2语句块2 CaseElse语句块n 1 EndSelect 多分支语句的执行流程 功能 根据 测试表达式 的值 选择第一个符合条件的语句块执行 执行过程是 先求 测试表达式 的值 然后顺序测试该值符合哪一个Case子句中情况 如果找到了 则执行该Case子句下面的语句块 然后执行EndSelect下面的语

温馨提示

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

评论

0/150

提交评论