VBA程序设计基础_第1页
VBA程序设计基础_第2页
VBA程序设计基础_第3页
VBA程序设计基础_第4页
VBA程序设计基础_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、第九章程序设计基础 教学目标: 理解什么是程序 掌握程序设计的基本方法 编写并调试简单的 VBA应用程序 编写简单的事件驱动程序 会在VBA应用程序中访问数据库 教学过程: 一、程序设计概述 做一件事,计算机可以把它分解为一系列的基本操作步骤,通过程序设计语言的基本语 句来完成,这就是程序。 程序设计方法主要有两种:面向过程的结构化程序设计方法和面向对象的程序设计方 法。前面所学的窗体对象设计就是一种面向对象的设计方法。 在Access中编写程序使用的语言是Visual Basic for Application,简单 VBA首先 看一下VBA编写的几个简单程序。 例9-1在窗体上放置一个命令

2、按钮和一个文本框,单击命令按钮后在文本框中显示VBA 程序设计” 步骤如下: 1、 打开数据库,切换到“窗体”对象下,双击“在设计视图中创建窗体”, 2、添加文本框,在对应的属性窗口“全部”选项卡的第一行设置名称为“文本1 ”,添加命 令按钮,名称为“命令 0” 3、打开“按钮”的属性窗口,在“事件”选项卡下的“单击”栏选“事件过程”,单击后面 的按钮,进入编辑窗口: 单击此按钮,输入程 序。 4、在编辑窗口中输入如下程序:(其实窗口中已有,所以我们只要在中间添加一句 Private Sub 命令 O_Click() 文本1.Value= “ VBA程序设计” End Sub 说明: 1、程序

3、的开头“ Private Sub”和结束“ End Sub”是一个固定搭配,表示这是一个过程, 程序中的“命令0_Click() ”表示这个程序在“命令 0”按钮被单击时执行。 2、 在编辑窗口已有程序的开头和结尾,所以我们只要输入中间的一句:文本1.value= “ VBA程序设计” 3、注意程序中引用的“命令 0”,“文本1” 一定要和窗体中的按钮、文本框名称一致。 5、关闭程序编辑窗口,切换到窗体视图,则单击命令按钮后,“ VBA程序设计”即显示在文 本框中。 思考在上面的窗体中再添加一个按钮,单击则清除文本框中显示的文本,应该怎样操作? 例9-2在窗体中有一个命令按钮和两个文本框,用户

4、在第一个文本框中输入一个正整数, 当单击该按钮时计算出这个正整数的阶乘,并在第二个文本框中显示计算结果。 步骤: 1、新建一个窗体,拖入两个文本框和一个命令按钮,名称为文本1、文本2、命令0 (这三 个控件名称后面程序中要引用,所以一定要命名!) I 1 11,首白,I ,了.,呂I 1 14 2、选中按钮,打开其属性窗口,在“事件”选项下的“单击”一栏,选“事件过程”,单 击后面的按钮,输入如下程序: Pri vate Sub 命命O_C1 ick) Diiti a As Integer, b 丸e Integer, c Ke Triteer 定义整充:壹旦 c二1 用来存敖甘算结果,这巔设

5、于初始值1 a =文本1 Velue 用来接收键盘输人刮丈本1中的数 For b = 1 To a C = c * b Kx t b 文本2Value二c| End Sub 说明: 1、 程序中变量在使用前要先定义,这里计算阶乘,用到的只能是整数,所以定义a、b、 c为整型变量。(见中间程序部分的第一句:Dim a As Integer) 2、单引号后面的是程序的注释语句,只起说明的作用,程序并不执行它。不输入这些 语句,程序照样正常运行。(见绿色部分) 3、输入程序时可以用小写字母输入单词,但每一个关键词的第一个字母计算机会自动 变成大写。(见程序中蓝色部分) 4、程序一般一句一行,也可多个

6、句子写在一行,中间用冒号隔开;如果一句太长,需 要分成多行,可在上一行的最后加下划线_”,系统就会把上下两行连在一起做为 一个语句。 3、关闭程序编辑窗口,切换到窗体视图,我们输入5,单击“计算”按钮,则会显示120, (实际上,5! =1X 2X 3X 4X 5,计算结果是120) 二、程序的输入输入出语句 (1) InputBox 函数 格式:InputBox 字符串1,字符串2,字符串3 功能:显示一个输入对话框,等待用户输入信息或按下按钮。在按钮事件发生后返回键盘输 入到文本框中的内容,返回值的类型为文本类型, 说明:对话框中的提示信息是字符串1,对话框的标题栏是字符串2,字符串3是输

7、入对话 框中的默认值。后两个字符串是可选项,可不选。 例9-3在窗体的命令按钮中分别加入以下代码,单击按钮后即可看出输入对话框的不同。 Private Sub Comma ndO_Click() InputBox 请输入学号, 学号输入框, 2009 End Sub 改成下面程序后的输入对话框: Private Sub Comma nd0_Click() InputBox 请输入学号,学号输入框” End Sub 改成下面程序后的输入对话框: Private Sub Comma nd0_Click() InputBox 请输入学号” End Sub (2) MsgBox函数 格式:MsgBox

8、字符串1,按钮参数,字符串2 功能:出现一个消息框,字符串1为消息框中的提示信息,按钮参数则决定了消息框中按钮 的类型(见下面按钮参数表),字符串2为消息框的标题栏上信息。 按钮参数表: 常数 值 按钮类型 vbOKO nly 0 只显示OK按钮 vbOKCa ncel 1 显示OK及Cancel按钮 vbYesNoCa ncel 3 显示Yes、No Cancel按钮 vbQuesti on 32 显示Warning Query图标 vbExclamati on 48 显示 Waring Message 图标 vbI nformatio n 64 显示 Information Message

9、 图标 vbDefaultButto n1 0 第一个按钮是缺省值 vbDefaultButto n2 256 第二个按钮是缺省值 vbDefaultButto n3 512 第三个按钮是缺省值 例9-4在窗体上添加一个命令按钮,当单击该按钮后,显示一个对话框:(1)提示消息为 “您确定要退出吗?”。(2)包含“确定”和“取消”两个命令按钮以及一个询问图标,默 认选择“确定”按钮,(3)对话框的标题栏为“确认退出” 分析:生成对话框需要用 MsgBox函数,包含“确定”和“取消”按钮,对应参数为1 (见 上表);包含一个询问图标,对应参数为32;默认选择是“确定”按钮(这里的第一个就是 “确定

10、”按钮),对应参数是0,根据题目要求对应的语句应为: MsgBox “您确定要退出吗?”,1+32+0,“确认退出” 步骤: 1、新建一个窗体,添加一个命令按钮, 2、 在命令按钮的属性窗口中切换到“事件”选项下,在“单击”一栏中选“事件过程”, 单击这一栏后面的按钮,出现 VBA编程窗口, 縉命令按齟;CowandO ConmiaiidJO 曲裁遥书栽表L Fora-S体了(代码) 爭片过保 CoBHiaiidOi Option Comp are Pat is 电 Private Sub CorrmiandOjCli ck 0 End! Suh 云朝课书数据丢- For j窗休3 (代码)

11、Cm oilJO OTtioTiDitabiEfe Fr iSub C:k C Nstfox “你确定要退出吗?I + 32 + 0.确认退出 在程序开头和结尾之间添加一句: 见下图: MsgBox “您确定要退出吗?” ,1+32+0, “确认退出 3、切换到窗体视图,单击命令按钮,弹出一个消息框,如图: 说明: 1、 使用参数进行组合时不能互相矛盾,例如不能同时显示“确定”“取消”两个按钮和“是”、 “否”、“取消”三个按钮。 2、上面的组合参数可以求和后表示,也可用按钮参数表中对应的常数表示,下面几种形式 均可: MsgBox “您确定要退出吗?”,1+32+0,“确认退出” MsgBo

12、x “您确定要退出吗?”,33,“确认退出” MsgBox您确定要退出吗?” ,vbOKCancel+vbQuestion+vbDefaultButton1,“确认退出” 3、当用户点击了不同的按钮,我们可以根据按钮的返回值来判定用户选择了哪个按钮,按 钮返回值如下表: MsgBox返回值 常数 值 选择按钮 vbOK 1 选择了 OK vbCa ncel 2 选择了 Cancel vbYes 6 选择了 Yes vbNo 7 选择了 NO 例9-5在窗体上添加一个命令按钮,当单击该按钮后接受用户输入的三角形三边长,并求 出周长后输出 步骤: 1、 新建一个窗体,添加一个命令按钮comma n

13、dO 2、在命令按钮的属性窗口中为其添加代码:如图 Private Sub Comma ndO_Click() 定义a,b,c,s为单精度变量,a,b,c为三边长,s为周长 Dim a As Sin gle, b As Sin gle, c As Sin gle, s As Si ngle 利用输入对话框接受键盘输入的值,并用Val()函数转把字符串转换成数值 a = Val(InputBox(请输入三角形的第一个边长 :) b = Val(InputBox(请输入三角形的第二个边长:) c = Val(InputBox(请输入三角形的第三个边长 :) s = a + b + c MsgBox

14、 三角形的周长是:” & s End Sub 3、切换到窗体视图,单击命令按钮,在弹出的对话框中依次输入三个值,例如3、4、5 则弹出一个消息框,显示三边长的结果: licr&soft Office Acre? 三、赋值语句 格式:变量名=表达式 功能:把右边表达式的值给左边的变量。例如x=2+1,x=x+1 说明: 变量要先定义才能使用 赋值号两边的数值必须兼容,即数据类型尽量一致。否则容易出错 例如: Dim x as Integer,y as Single,z as String定义x为整数,y为单精度数,z为文本字 符 X=3.5 Y=4 Z=” ACCESS 第二句x定义为整数,却给

15、了个小数 3.5,此时x会取4, 第三句y是单精度数,给了整数 4,但系统可以转换成 4.000再给变量y,所以是合法的。 第四句z是字符变量,所以等式右边只能赋值一个字符串。 等号左边只能有一个变量,右边可以是含这个变量的表达式, X 例如x=x+1正确,但x+1=x就不正确了。 4、赋值号右边的计算结果必须在左边变量的表示范围之内,否则系统会提示出错, 例如: Dim x as Integer 定义x为整型变量 x=40000 整型变量x最大只能取值32767,所以40000就超出了整型数据表示的最大值,程序运行 到这一句时,系统会提示出错。 5、变量被两次赋值 ,则新值冲掉旧值, 例如

16、x=2 x=3 x=x+2 x=? 例9-6在窗体上添加一个命令按钮,当单击该按钮后接受用户输入的长方形的长和宽,计 算其面积并输出计算结果。 步骤: 1、新建窗体,并在上面添加一个命令按钮,按钮名称为“命令0”,在按钮上添加代码如下: Private Sub 命令 0_Click() 定义变量a,b,s为单精度变量,a,b表示长方形的长和宽,S表示面积 Dim a As Single, b As Single, s As Single 通过InputBox函数输入边长,同时将文本型数据转换成数值型 a = Val(InputBox(请输入长方形的第一个边长:) b = Val(InputBo

17、x(请输入长方形的第二个边长:) s = a * b MsgBox 长方形面积为:” & s End Sub 2、切换到窗体视图,单击命令按钮,会出现一个输入框,要求你输入长方形的两个边长, 输入边长后,单击“确定”按钮,即弹出一个消息框,显示长方形的面积。 注意:输入程序代码时,要在英文半角下输入,各关键词之间要有空格(“英文半角”输入 状态下的空格!) 四、顺序结构 在高级程序设计语言中, 其语句执行都有一定的先后顺序,总体可以分为顺序结构语句 (按语句的先后顺序执行)、条件分支语句(根据条件的成立来确定执行哪一个分支)、循环 语句(某个条件成立时反复执行某一段程序)。 顺序结构是最简单的

18、一种结构,这种结构让语句按先后顺序执行,以完成简单的功能。 例9-7在窗体上放一个命令按钮和两个文本框,在A=2 两个文本框中分别输入两个不同的值,单击命令按钮B=3 T=A 把A的值放到T中,则T=2 A=B 把B的值放到 A中,贝U A=3 B=T把T的值给B,贝U B=2 后交换这两个文本框中的数据。 分析:假如a=2,b=3,利用赋值语句总是把等号右边值给左边的特性,借助中间变量,可以 让a,b的值互换。 步骤: 1、 新建一个窗体,窗体中放两个文本框和一个命令按钮,名称分别是“文本1”、“文本2”、 “命令0”,(在属性窗体设置这些控件的名称,在代码程序中引用) 2、选中命令按钮,在

19、属性窗口中添加这个按钮的代码如下: Private Sub 命令 0_Click() Dim a As String, b As String, t As String 定义 a,b,t 为文本变量 a =文本 I.Value b =文本 2.Value t = a a = b b = t 文本 I.Value = a 文本 2.Value = b End Sub 3、 切换到窗体视图,在文本框中输入两个值,例如2、3,单击命令按钮,可看到文本框中 两个数实现了交换。 目宙体孑:窗体 例9-8在窗体上放一个命令按钮和两个文本框,第一个文本框中输入用分钟表示的时间,单 击命令按钮则把这个时间转换

20、成以小时和分钟表示的时间。 步骤: 1、 新建一个窗体,放一个命令按钮和两个文本框,定义按钮和文本框的名称为命令0、文 本1、文本2 2、 选中命令按钮,在属性窗口中切换到“事件”选项下,在“单击”栏选“事件过程”, 单击这一栏后面的按钮,输入以下代码: Private Sub 命令 O_Click() Con st a As In teger = 60 声明 a 为常量 60 Dim x As Integer, y As Integer, z As Integer 定义 x,y,z 为整型变量 x =文本I.Value 输入的分钟数 y = x a xa表示x整除a”的运算,和 x/a不同。

21、 z = x Mod a x mod a表示求x除a的余数” 文本2.Value = y & ”小时” & z & ”分钟注意等式右边用用空格分开各个量。 End Sub 3、切换到窗体视图下,输入一个分钟数例如:100,单击命令按钮就可转换成1小时40分 钟。 说明: 1、常量的声明:常量是一种特殊的量,它的值设置后就不能更改或赋于新值,可以在 代码中的任何地方使用常量代替实际的值,对于程序中经常出现的常数值且难以记 忆无明确意义的数值,使用常量声明可增加代码的可读性和可维护性。 格式:Const常量名as类型名=表达式 2、本程序中用到几种运算,常见的运算见下表: 符号 描述 示例 + 加

22、 一 减 * 乘 4*3=12 / 除 7/2=3.5 整除 72=3(只取商的整数部分) Mod 求余 9Mod6=3 A 求幕 10A3=1000 五、分支结构 分支结构语句有两种:if 语句和Select Case语句 (1) if语句 单分支: 格式: if 条件表达式then 执行语句1 Else 执行语句2 End if 功能:条件表达式成立就执行语句1,不成立就执行语句 2 说明:条件语句以if开头,以End if 结束,if和End if要成对出现。 例9-9在窗体上放一个命令按钮和3个文本框,在前两个文本框中输入两个整数,单击命 令按钮比较这两个文本框中输入的整数的大小,并将

23、较大的数放到第三个文本框。 分析:输入的两个数存放到x,y中,用z存放较大的数:如果 xy,则z=x,否则就让z=y 步骤: 1、新建窗体,放置三个文本框,及一个命令按钮,分别选中这些控件,在属性窗口中设置 文本框及按钮名称为文本1、文本2、文本3、命令0 2、选中按钮,在其属性窗口的中切换到“事件”选项,再在“单击” 一栏中选“事件过程”, 单击这一栏后面的按钮,输入以下代码: Private Sub 命令 0_Click() Dim x As In teger, y As In teger, z As In teger x =文本 1.Value y =文本 2.Value If x y

24、The n z = x Else z = y End If 文本 3.Value = z End Sub 3、切换到窗体视图,在文本框1、2中输入两个数(例如 2, 6),单击“确定”则在第三个 文本框中显示较大的数。 记录:回|r 回f共有记录数:1 如果从有三种或三种以上的条件选择i种,则要用下面的条件语句: 格式: If 条件表达式1 then 执行语句1 Elseif条件表达式2 then 执行语句2 Else 执行语句n End if 注意书上错误,此处的 Elseif没有空格(在 Else和if之间) 例9-10在窗体上放一个命令按钮和两个文本框,单击命令按钮根据窗体中“成绩”文本

25、框 输入的成绩,判断成绩等级,并显示在窗体的“等级”文本框中。判定方法:85分以上优 秀,75分至85分良好,60至75分及格,60分以下不及格。 分析:由于一个成绩有四个等级选择,所以要用到多种条件选择语句 步骤: 1、新建一个窗体,放一个命令按钮及两个文本框,在相应的属性窗口设置它们的名称分别 是“命令0”、“成绩”、“等级” 在按钮0上添加程序代码如下: Private Sub 命OjCliek 0 Dim 衣Integer整型3E量e用来:接收文本fll中輸入的成續 Dim deii As String,定父日已土宇T?更亘鼻用垂存放歳載的等级 呂-成绩-Value If s = 35

26、 Then 1血i八优卸 Elaelf e = T5 Then denji = 良好帀 Elself s GO Then denjii =,艮格 E1z4 ienj i 二不圧恪,, End If 等级.Value - denj 1 End Sub 2、关闭程序窗口,切换到窗体视图下,输入不同的分数,单击“确定”按钮后可显示不同 的等级: 多种条件选择语句除了用以上的语句格式外,还有一种更加简洁的分支语句结构Select Case语句 (2)Select Case 语句 格式: Select Case 变量表达式 Case表达式列表1 执行语句1 Case表达式列表2 执行语句2 Case E

27、lse 执行语句n End Select 功能:第一句中变量表达式中的值满足哪个表达式列表,就执行哪个语句。例9-11将例9-10中的if 语句改成 Select Case 表示。 步骤:1、修改命令按钮上程序代码如下: Private Sub 命ck() Bim e血Integer 整型变量弓用釆接收文本框中输入的成蕴 Dim deiji As String走冥字待玉4中丟存故应SE的等卬 s -咸绩, 5&1 ect Case s Is = 85 denj i = tt 秀 C%3 75 To 80 den-ji -良好 Cai 60 To 75 denji 二:及槨 Case Zlse_

28、 dfeitji二不及格 Eni Select 等- Vtlufi = drtj i End Sub 四、关闭程序窗口,切换到窗体视图下输入不同的成绩值进行调试。 六、循环结构 如果在程序中需要重复执行某段代码,可用循环结构VBA中提供了三种循环结构 (一)DoLoop循环 格式: Do While/Un til 条件表达式 Loop 中间需要反复执行的语句 称为循环语句体 功能:根据Do While后面的条件表达式来重复执行循环语句体若干次,直到表达式的值不 再成立时,执行 Loop后面的语句。 例9-12在窗体上放一个命令按钮,当单击该按钮时,计算1+2+3+100的结果,并利用消息 框显

29、示出来 步骤如下: 1、新建一个窗体,添加一个按钮,在属性窗口中设置名称为“命令0” 2、在按钮上添加代码如下: Private Sub 命令 0_Click() Dim s As In teger, x As In teger s = 0: x = 1 Do While x = 100 s = s + x x = x + 1 Loop MsgBox 1+2+.+100 的值为:” & s End Sub 3、关闭程序编辑窗口,切换到窗体视图,单击命令按钮,则弹出计算结果。 如果改成求1X 2 x 3x 10的值,该怎样进行? 如果改成在文本框中输入一个值x,求1+2+x的值,该怎样进行? 例

30、9-13在窗体上放一个命令按钮,当单击该命令按钮时,求满足不等式1+2+3+n=100 的最大整数n,并将所求的n输出在消息框中。(最终满足条件的n为13) 步骤:打开例9-12,修改程序如下: Private Sub 命令 O_Click() Dim s As In teger, n As In teger s = 0: n = 0 Do While s = 100 n = n + 1 s = s + n Loop注意退出循环时n(比满足S100的那个n)增加了 1 MsgBox 满足1+2+n 100 注意退出循环时 n(比满足S100的那个n)增加了 1 MsgBox 满足1+2+n=1

31、00的最大整数 n为& n-1 (二) For Next 循环 格式: For循环变量=初值to 终值step 增量 循环语句体 Next循环变量 功能:其执行过程分以下两步: (1)循环变量取初值后,执行循环体 (2)到Next循环变量时,循环变量加上增量,看是否超过终值,如超过则退出循环, 否则继续执行循环体。 说明:step 1可省略不写(即循环变量增量为1时可省略step项不写) 例9-15编写一个过程,求 0到100之间的所有奇数的和 分析:过程就是在程序中反复用到的一小段程序,定义成过程后,后面再用到这段程序只要 输入过程名即可调用这段程序 步骤: 1、新建一个窗体,添加一个按钮,

32、进入按钮的代码编辑窗口: 修改此处为过程名 End Sub 2、在编辑窗口上修改并添加代码如下:(见上图) Private Sub L15() 定义过程 L15 Dim s As In teger, i As In teger s = 0 For i = 1 To 100 Step 2 s = s + i Next i MsgBox 1+3+5+.+99= & s End Sub 4、切换到窗体设计视图,选中按钮,在属性窗口中仍然选“事件”选项卡下的“单击事件” 栏中选“事件过程”,在编辑窗口中添加程序如下: 寻: 朝课书数据表-宙体T (代1 pti on Compare DaAaLaze

33、Private Sub LIS () lim s Az Integer, i As Integer e = 0: i = 1 For i = 1 To 100 Step 2 E = S +1 Next 1 MsgBox T到100的奇數和其T & s End Sub Frivate Sub ConmandO Click() L15| End Sub 注:任何一种循环语句都可以用另一种循环语句代替,上面的FORNext循环程序用 WhileLoop循环也可行,程序改动如下: Dim s As In teger, i As In teger s = 0 i=1 do while i100 s = s + i i=i+2 loop MsgBox 1+3+5+.+99= & s DO 5、切换到窗体视图,单击按钮则调用过程 L15,执行过程L15的程序,效果如下: 例9-16编写一个过程,输入一个整数n,然后求1! +2! +n!,然后在命令按钮中调用 这个

温馨提示

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

评论

0/150

提交评论