




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 7.1 vba概述 7.2 对象模型 7.3 数据类型 7.4 程序语句 7.5 数组1、vba简介 vba(visual basic application)是microsoft office系列软件的内置编程语言,vba的语法与独立运行的visual basic编程语言互相兼容。它使得在microsoft office系列软件中快速开发应用程序更加容易,且可以完成特殊的、复杂的操作。 1、vba简介 vba 是面向对象的程序设计语言。是面向对象的程序设计语言。面向对象程序设计是一种以对象为基础,面向对象程序设计是一种以对象为基础,以事件来驱动对象的程序设计方法。以事件来驱动对象的程序设计
2、方法。1、vba简介 (续) vba和常用的程序开发语言vb非常相似,二者来自同一种编程语言,即basic。 vba与vb所包含的对象级是相同的,也就是说,对于vb所支持对象的多数属性和方法,vba也同样支持。但两者并非完全一致,在许多语法和功能上有所不同,vba从vb中获得了主要的语法结构,另外又加上office中的一些功能。 office中提供的vba开发界面称为vbe( visual basic editor ) ,即可视化的basic 编程环境。在access中,打开vbe窗口的方法有多种。在模块对象窗口单击“新建”按钮,或打开一个已存在的模块,都会打开vbe窗口。选择工具菜单中“宏”
3、子菜单的“visual basic编辑器”命令。使用alt+f11快捷键打开vbe界面,或切换数据库窗口和vbe窗口。工具栏 工程资源管理器窗口 属性窗口 代码窗口 1、access对象 access中的对象大多都有父子关系,有根对象,也有子对象(包括子对象的子对象等等)。在vba代码中访问对象,必须从根对象开始,逐步取其子对象,直到需要访问的对象为止。access根对象有6个,如表所示 :对象名说明application应用程序,即access环境。dbengine数据库管理系统,表对象、查询对象、记录对象、字段对象等都是它的子对象。debug立即窗口对象,在调试阶段可用其 print 方法
4、在立即窗口显示输出信息。forms所有处于打开状态的窗体所构成的对象。reports所有处于打开状态的报表所构成的对象。screen屏幕对象。forms是一个集合对象,包括当前数据库中所有打开的窗体对象。引用窗体对象的语法为 forms! formname , 其中的formname 是窗体名每个form对象都有一个 controls 集合例如要引用窗体form_窗体窗体1上的控件text1,可以显式或隐式地引用controls集合集合。 forms!form_窗体1!text1 隐式引用forms!form_窗体1.controls!text1 显示引用2、对象的属性、对象的属性 在程序代码
5、中,通过赋值的方式来设置对象的属性。 格式为:对象.属性 = 属性值 例如:label1.caption = “学生成绩表 ”3、对象的事件、对象的事件 事件是发生在对象上的事情或消息。系统为每个对象预先定义了一系列的事件,如: click(单击)、dblclick(双击)等等。例如:按下按钮command1时,文本框text1的字体改变。 private sub command1_click() text1.fontsize = 14 end sub 方法是一些系统封装起来的通用过程和函数,以方便用户的调用。对象方法的调用格式为:对象. 方法 参数名表 例如:在立即窗口输出2+3的结果 de
6、bug.print 2+3sub q1()定义了一个宏,名为 ” q1 ”.debug.print 2 + 3end sub除窗体、控件的setfocus(获得控制焦点)、requery(更新数据)等方法外,用得最多的是docmd对象的一些方法。使用docmd对象的方法,可以在vba中运行access的操作,如执行打开窗体(openform)、关闭窗体(close)、selectobject(指定数据库对象)等操作。例如: 打开”学生资料浏览”窗体的语句是 docmd . openform”学生资料浏览”例例7-2-1:制作一个显示欢迎信息的窗体。(p169)新建一个窗体,放置两个按钮和一个文
7、本框。option compare databaseprivate sub command1_click() me.text1.setfocus me.text1.text = 您好!欢迎您学习vba“end subprivate sub command2_click() me.text1.setfocusme.text1.text = end subprivate sub form_load()me.caption = 欢迎end sub在”工具”菜单的”选项”的 “编辑器格式”中,调整字体1、变量、变量 变量是在程序运行时发生变化的量。作用:s 保存计算结果s 设置属性s 指定方法的参数s
8、 在过程间传递数据变量名变量名是内存中存放数据的缓冲区的名字。在使用变量前必须先声明,通知vba变量的名字和数据类型。变量命名应注意:1.变量名必须以字母开头,其最大长度为255。2.变量名不能包含下列字符:+ / * ! . $ & 等。3.变量名不能包含空格,可以包含下划线。 4.不能包括vba中的关键字(在程序中有特定含义的词) 、运算符or内置函数名len 、abs 等等。变量的类型 (p170) 数据类型关键字占字节数取值范围字节型byte10255布尔型boolean2true或false整型integer2-32 76832 767长整型long4-2 147 483 6
9、482 147 483 647单精度浮点型single4负数:-3.402823e38-1.401298e-45正数:1.401298e-453.402823e38双精度浮点型double8负数:-1.79769313486232e308-4.94065645841247e-324正数:4.94065645841247e-3241.79769313486232e308小数型decimal12小数点右边的数字个数为028货币型currency8-922 337 203 685 447.5808922 337 203 685 447.5807日期型date8100年1月1日9999年12月31日字
10、符型string与字符串有关定长:165400变长:0到20亿对象型object4任何对象引用变体型variant数字:16;字符:22+字符串长0到20亿声明变量 作用作用:指定变量的数据类型,变量的适用范围(作用域) 。显式声明变量: 可以在变量被使用之前,在代码的任意位置进行声明。最好在程序的开始位置声明所有变量。可以用dim语句声明变量,其格式为:dim 变量名变量名 as 类型类型 例如: dim x as integer 即即 dim x% dim x1 as integer, x2 as integer, x3 as single隐式声明变量:使用变量前不对变量类型进行明确声明,
11、系统会默认为 variant 数据类型。常量在程序运行期间,其值保持不变。常量可以是数字、字符串,也可以是其他值。每个应用程序都包含一组常量,用户也可以定义新常量。定义了常量,就可以在程序中使用它,不必再用实际值。vba支持两种类型的常量,即内置常量和用户定义的常量。用户自定义常量在程序中经常用到某个常数值,或为了程序的阅读或修改方便。声明常量使用const 关键字,其格式为: const 常量名 as 类型 = 表达式 例如:const pi = 3.141593 算术运算 +(加)、-(减、取负)、*(乘)、/(除)、mod(取模)、 (整除)、(乘方) 连接运算符 & 关系运算符
12、 =(等于) 、 (不等于)、(大于)、=(大于等于)、连接运算符 关系运算符 逻辑运算符定义:表达式由运算符、数值和标识符组成。(p172)表达式书写规则: (1)每个符号占一格,所有符号必须并排写在同一横线上,不能在右上角或右下角写方次或下标。例如:x3 写成 x3 ,x1+x2 写成 x1+x2 (2)所有运算符都不能省略。例如:2x 写成 2*x(3)所有括号都用小括号,成对出现。 例如:5x+2(y+z)必须写成 5*(x+(y+z) (4)数学表达式中的有些符号需要修改。例如:2r 可改写为 2*pi*r 例如:数学表达式 写成vba表达式为:(-b+sqr(b2-4*a*c)/(
13、2*a)aacbb242 vba提供的内置函数按其功能可分为数学函数、字符串函数、日期函数、转换函数等 。(常用内置函数 见p174 表7.3.3)1 msgbox 函数msgbox(提示,按钮,标题)例7-3-1:(p175)private sub form_load()dim intresponse as integer, strtitle as stringstrtitle =“msgbox 示例intresponse = msgbox(“停止处理!, 19, strtitle)if intresponse = vbyes then msgbox “你按下的是”确认”键.else msg
14、box “你按下的不是”确认”键.end ifend sub 2 inputbox函数 inputbox(提示,标题,默认,x坐标位置,y坐标位置) 例7-3-2:private sub form_load()dim strmsg as string, strtitle as string, strname as stringstrmsg = 请输入你的名字:strtitle = inputbox示例strname = inputbox(strmsg, strtitle, 李四)end sub vba中的语句是执行具体操作的指令,每个语句以 enter (回车)结束。语句由vba关键字、属性、
15、函数、运算符以及vbe可以识别的指令符号组合而成。书写程序语句时遵循的构造规则称为语法。缺省情况下,输入语句时,vba将自动对输入的内容进行语法检查,发现错误会弹出一个信息框提示出错的原因。vba按约定对语句进行简单的格式化处理,例如关键字、函数的第一个字母自动变为大写。书写程序的语法规则 一般情况下,一行输入一个语句。允许使用复合语句,即把几个语句放在一行中,各语句间用冒号“:”分隔 。一个语句也可分若干行书写,在要续行的行尾加入续行符(空格和下划线)。 (见p176) vba具有结构化程序设计的三种基本结构:s 顺序结构s 选择结构s 循环结构 赋值语句是程序语言中最基本的语句,其格式为:
16、 = 例如:total = 100 readout = good morning! text1.text = 请输入您的姓名: a = 35 + total / 2 注意(p177)1. 赋值语句兼有计算与赋值的双重功能 。2. 右边表达式类型与左边变量类型不同时,要进行类型的转换。3. 赋值号左边只能是变量,不能是常量或表达式。 4. 不能在一条赋值语句中,同时给多个变量赋值。反例:反例:dim x%, y%, z% : x=y=z=50 运行结果为 x=0 因为因为系统系统只将最左边的只将最左边的 “= ”作为赋值符号作为赋值符号, 另外两另外两个个“ = ”当作关系运算符当作关系运算符。
17、 (y,z 默认初值为默认初值为 0)则则 y=z比较,结果为比较,结果为真:真:-1, 而而-1与与 50比较,结比较,结果为果为假:假:05. 用 with 语句 可以给一个对象的多个属性同时赋值。(p177 例7-4-1)例例7-4-3: 某商场促销采用购物打折的办法,顾客一次购物 s 在1000元以上者,按八折优惠;s 在500元以上,但不足1000元者,按八五折优惠;s 在300元以上,但不足500元者,按九折优惠;s 在100元以上,但不足300元者,按九五折优惠;s 不足100元者,没有优惠。 (p179)则计算折扣的程序代码为:dim a as single, b as sin
18、gle a为原价为原价, b为折扣后应付款为折扣后应付款if a = 1000 then b = 0.8 * aelseif a = 500 then b = 0.85 * a elseif a = 300 then b = 0.9 * a elseif a = 100 then b = 0.95 * aelse b = aend if例例7-4-5select case a case is = 1000 b = 0.8 * a case is = 500 b = 0.85 * a case is = 300 b = 0.9 * acase is = 100 b = 0.95 * a case
19、 else b = a end select 表达式1表达式2表达式n语句块1语句块2语句块n语句块n+1fffttt在实际中遇到操作过程不太复杂,但需要重复相同处理的问题,比如,统计本单位所有人员的工资,求全班同学各科的平均成绩等等。如果用顺序结构来处理,是一个非常乏味且冗长的程序。例如:求自然数 1100 的和,用顺序结构,程序如下:private sub form_click() dim s&,x% s = 0 x = 1 s = s + x x = x + 1 s = s + x x = x + 1 s = s + x x = x +1 x的值累加到99 s = s + xen
20、d sub解决这类问题最好用循环语句。循环就是重复地执行同一组语句。新建一个窗体, 添加一个文本框, 名称为 text 0 。在窗体上添加如下代码 :private sub form_click() dim s&,x%s = 0 for x = 1 to 99 step 1 s = s + x next x text 0.value = “自然数 1100 的和=” & send subvba提供两种不同风格的循环语句:for next 语句do loop 语句循环结构适合处理过程相同、数据相关,但具体值不同的问题。for循环的一般格式: for 循环变量=初值 to 终值 s
21、tep 步长 循环体 next 循环变量 参见下页图示例例:for n = 1 to 10s = s + nnext n执行过程 1)系统将初值赋给循环变量,并自动记下终值和步长。 2)检查循环变量的值是否超过终值。如果超过就结束循环,执行 next 后面的语句;否则,执行一次循环体。 3)执行 next 语句,将循环变量增加一个步长值 再赋给循环变量,转到(2)继续执行。说明 循环变量:或循环控制变量,必须为数值型 初值、终值:数值型,可以是数值表达式。 步长:循环变量的增量,是数值表达式。其值为正,初值应小于终值;若为负,初值应大于终值。步长不能是0。如果步长是1,step 1可略去不写。
22、 循环体:在的语句序列。 next后面的循环变量与for语句中的循环变量必须相同。4、循环语句一 for循环注意: for 语句和 next 语句必须成对出现,缺一不可,且 for 语句必须在 next 语句之前。 循环次数由循环的初值、终值和步长确定,计算公式为: 循环次数=int(终值初值)/步长)+1【例】求 n n !(n为自然数)。分析:由阶乘的定义n!=1*2*(n-2)*(n-1)*n =(n-1)!*n即自然数的阶乘,等于该自然数与前一个自然数阶乘的乘积。程序如下:程序如下:private sub cmd1_click() dim i as integer dim f as l
23、ong dim n as integer n = inputbox(输入一个自然数:输入一个自然数:, 输入提示输入提示, 10) f = 1 for i = 1 to n f = f * i next i label1.caption = n & 的阶乘是的阶乘是 & fend sub for循环需要预先知道循环次数。 对于不能预先确定循环次数,只知道控制条件的情况,可以使用 do循环。doloop 循环可以根据需要决定是条件满足时执行循环体,还是一直执行循环体直到条件满足,具有很强的灵活性。形式1: do while | until 语句块 exit do 语句块 loop
24、形式2:do 语句块 exit do 语句块loop while |until 例:例:以下循环的执行次数是以下循环的执行次数是 _。 k=0 do while k=2 k=k+1 loop例:例:以下循环的执行次数是以下循环的执行次数是 _。 k=0 do until k2例:阅读程序,结果是例:阅读程序,结果是_。 n=0 do n=n+1 debug.print n loop while n2注意:1.do 循环中,while语句指定循环开始的条件(当)。until语句指定循环结束的条件(直到)。2.do循环本身不能修改循环条件,必须在循环体内设置相应语句(如:n = n +1),使得整
25、个循环趋于结束,以避免死循环。3.能用fornext循环编写的程序,都可以用do循环来实现。反之,则不尽然。循环的嵌套for循环和do循环都可以嵌套,且可以互相嵌套。但必须满足以下条件: 外循环必须完全包含内循环,不能交叉。 外循环变量与内循环变量不能同名。例例: : i=1 : j=1 : s=0 : n=0 for i=1 to 3for j=1 to 4 s= i *j : n=n+snext next 循环的强制退出在某些情况下,为了减少循环次数或便于程序调试,需要提前强制退出循环。vba为fornext和doloop循环语句提供了相应的强制退出循环的语句:1exit for 该语句用
26、于fornext循环,在循环体中可以出现一次或多次。当系统执行到该语句时,就强制退出当前循环。常用格式是: if 条件 then exit for 即当循环执行过程中满足某个条件时,就结束循环。循环的强制退出2exit do 该语句用于doloop循环,具体用法同exit for 一样。循环的强制退出1、数组的定义 数组是一组相同类型变量的集合。必须先声明后使用。在程序中使用数组的好处是用一个数据名代表逻辑上相关的一批数据,用下标表示该数组中的各个元素。数组的形式:数组名(下标1,下标2)例如: name ( 30 ) 或 a(2 , 3)数组分为两类: 静态(定长)数组 动态(可变长)数组1
27、.静态数组的声明 dim 数组名(下标1,下标2) as 数据类型例如:dim s(10) as singledim su(3, 4) as integer, sd(1 to 3, 3 to 4) as integer 数组中元素的排列(见p185 表7.5.1) 说明: 声明了数组名、维数、大小、类型 维数:几个下标为几维数组。 下标:必须为常数。下界 to 上界 , 省略下界为0 。 每一维大小:上界下界上界下界 +1 数组大小: 每一维大小的乘积 例1:dim mark( 1 to 100 ) as integer例2: dim larray( 0 to 3, 0 to 4) as lo
28、ng 数组 larray 共有 45个元素等价于: dim larray(3, 4) as long 注意:数组声明中的下标说明了数组的整体,即每维的大小;而在程序其他地方出现的下标表示数组中的一个元素。两者写法例如: dim x(10) as integer 声明 x 数组有11个元素 而 x(10)=100 对 x( ) 数组中下标为10的元素赋值2. 动态数组的声明 动态数组在声明数组时,不指定数组中的元素个数。使用它时,再按需要用 redim 语句指定数组的大小。redim语句的格式为:redim 数组名(下标1,下标2) as 数据类型 例如:声明数组时,不指定元素个数。dim s( ) as singledim score( ) as single例7-5-1:使用动态数组。(p185)option compare databasedim stname() as string, strecord() as integerprivate sub command2_click()n = 50i = 3redim stname(n) redim strecord(1 to i, n) end sub 定义数组时,用数组名表示该数组的整体。例如:dim a(10) 表示数组中有
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国慈善基金管理办法
- 规范项目实施管理办法
- 财务上下协同管理办法
- 装饰工程中心管理办法
- 融资租赁物管理办法
- 中学食堂安全管理办法
- 东莞工厂保安管理办法
- 规范资金支付管理办法
- 贷款协议分期管理办法
- 中央厨房应急管理办法
- 《中药提取物生产技术》课件-中药常用的粉碎方法
- Unit 1 完形填空训练8篇-2023-2024学年英语八年级上册单元冲刺满分题型训练(人教版)
- DB32/T 1086-2022 高速公路建设项目档案管理规范(修订)
- 教师资格证《教育知识与能力》中学-必背知识点
- 配料保密协议
- 特种设备安全管理实施细则
- 托管运营合同范文
- 显微根管治疗的护理配合
- 电气工程专业导论
- 汽车机械基础课件 项目三 汽车构件静力学分析
- 浙江省七彩阳光联盟2024-2025学年高三上学期8月返校联考语文试题 含解析
评论
0/150
提交评论