首页 VBA程序设计基础

VBA程序设计基础

举报
开通vip

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

VBA程序设计基础
-.z.第九章程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 根底教学目标:理解什么是程序掌握程序设计的根本方法编写并调试简单的VBA应用程序编写简单的事件驱动程序会在VBA应用程序中访问数据库教学过程:程序设计概述做一件事,计算机可以把它分解为一系列的根本操作步骤,通过程序设计语言的根本语句来完成,这就是程序。程序设计方法主要有两种:面向过程的构造化程序设计方法和面向对象的程序设计方法。前面所学的窗体对象设计就是一种面向对象的设计方法。在Access中编写程序使用的语言是VisualBasicforApplication,简单VBA。首先看一下VBA编写的几个简单程序。例9-1在窗体上放置一个命令按钮和一个文本框,单击命令按钮后在文本框中显示"VBA程序设计〞步骤如下:1、翻开数据库,切换到"窗体〞对象下,双击"在设计视图中创立窗体〞,单击此按钮,输入程序。2、添加文本框,在对应的属性窗口"全部〞选项卡的第一行设置名称为"文本1〞,添加命令按钮,名称为"命令0〞3、翻开"按钮〞的属性窗口,在"事件〞选项卡下的"单击〞栏选"事件过程〞,单击后面的按钮,进入编辑窗口:4、在编辑窗口中输入如下程序:〔其实窗口中已有,所以我们只要在中间添加一句PrivateSub命令0_Click()文本1.Value="VBA程序设计〞说明:程序的开头"PrivateSub〞和完毕"EndSub〞是一个固定搭配, 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示这是一个过程,程序中的"命令0_Click()〞表示这个程序在"命令0〞按钮被单击时执行。在编辑窗口已有程序的开头和结尾,所以我们只要输入中间的一句:文本1.value="VBA程序设计〞注意程序中引用的"命令0〞,"文本1〞一定要和窗体中的按钮、文本框名称一致。EndSub5、关闭程序编辑窗口,切换到窗体视图,则单击命令按钮后,"VBA程序设计〞即显示在文本框中。思考在上面的窗体中再添加一个按钮,单击则去除文本框中显示的文本,应该怎样操作?例9-2在窗体中有一个命令按钮和两个文本框,用户在第一个文本框中输入一个正整数,当单击该按钮时计算出这个正整数的阶乘,并在第二个文本框中显示计算结果。步骤:新建一个窗体,拖入两个文本框和一个命令按钮,名称为文本1、文本2、命令0〔这三个控件名称后面程序中要引用,所以一定要命名!〕选中按钮,翻开其属性窗口,在"事件〞选项下的"单击〞一栏,选"事件过程〞,单击后面的按钮,输入如下程序:说明:程序中变量在使用前要先定义,这里计算阶乘,用到的只能是整数,所以定义a、b、c为整型变量。〔见中间程序局部的第一句:DimaAsInteger〕单引号后面的是程序的注释语句,只起说明的作用,程序并不执行它。不输入这些语句,程序照样正常运行。〔见绿色局部〕输入程序时可以用小写字母输入单词,但每一个关键词的第一个字母计算时机自动变成大写。〔见程序中蓝色局部〕程序一般一句一行,也可多个句子写在一行,中间用冒号隔开;如果一句太长,需要分成多行,可在上一行的最后加下划线"_〞,系统就会把上下两行连在一起做为一个语句。3、关闭程序编辑窗口,切换到窗体视图,我们输入5,单击"计算〞按钮,则会显示120,〔实际上,5!=1×2×3×4×5,计算结果是120〕程序的输入输入出语句〔1〕InputBo*函数格式:InputBo*字符串1,[字符串2],[字符串3]功能:显示一个输入对话框,等待用户输入信息或按下按钮。在按钮事件发生后返回键盘输入到文本框中的容,返回值的类型为文本类型,说明:对话框中的提示信息是字符串1,对话框的标题栏是字符串2,字符串3是输入对话框中的默认值。后两个字符串是可选项,可不选。例9-3在窗体的命令按钮中分别参加以下代码,单击按钮后即可看出输入对话框的不同。PrivateSubmand0_Click()InputBo*"请输入**","**输入框","2009"EndSub改成下面程序后的输入对话框:PrivateSubmand0_Click()InputBo*"请输入**","**输入框"EndSub改成下面程序后的输入对话框:PrivateSubmand0_Click()InputBo*"请输入**"EndSub〔2〕MsgBo*函数格式:MsgBo*字符串1,[按钮参数],[字符串2]功能:出现一个消息框,字符串1为消息框中的提示信息,按钮参数则决定了消息框中按钮的类型〔见下面按钮参数表〕,字符串2为消息框的标题栏上信息。按钮参数表:常数值按钮类型vbOKOnly0只显示OK按钮vbOKCancel1显示OK及Cancel按钮vbYesNoCancel3显示Yes、No、Cancel按钮vbQuestion32显示WarningQuery图标vbE*clamation48显示WaringMessage图标vbInformation64显示InformationMessage图标vbDefaultButton10第一个按钮是缺省值vbDefaultButton2256第二个按钮是缺省值vbDefaultButton3512第三个按钮是缺省值例9-4在窗体上添加一个命令按钮,当单击该按钮后,显示一个对话框:〔1〕提示消息为"您确定要退出吗?〞。〔2〕包含"确定〞和"取消〞两个命令按钮以及一个询问图标,默认选择"确定〞按钮,〔3〕对话框的标题栏为"确认退出〞分析:生成对话框需要用MsgBo*函数,包含"确定〞和"取消〞按钮,对应参数为1〔见上表〕;包含一个询问图标,对应参数为32;默认选择是"确定〞按钮〔这里的第一个就是"确定〞按钮〕,对应参数是0,根据题目 要求 对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗 对应的语句应为:MsgBo*"您确定要退出吗?〞,1+32+0,"确认退出〞步骤:新建一个窗体,添加一个命令按钮,在命令按钮的属性窗口中切换到"事件〞选项下,在"单击〞一栏中选"事件过程〞,单击这一栏后面的按钮,出现VBA编程窗口,在程序开头和结尾之间添加一句:MsgBo*"您确定要退出吗?〞,1+32+0,"确认退出〞,见下列图:切换到窗体视图,单击命令按钮,弹出一个消息框,如图:说明:使用参数进展组合时不能互相矛盾,例如不能同时显示"确定〞‘"取消〞两个按钮和"是〞、"否〞、"取消〞三个按钮。上面的组合参数可以求和后表示,也可用按钮参数表中对应的常数表示,下面几种形式均可:MsgBo*"您确定要退出吗?〞,1+32+0,"确认退出〞MsgBo*"您确定要退出吗?〞,33,"确认退出〞MsgBo*"您确定要退出吗?〞,vbOKCancel+vbQuestion+vbDefaultButton1,"确认退出〞当用户点击了不同的按钮,我们可以根据按钮的返回值来判定用户选择了哪个按钮,按钮返回值如下表:MsgBo*返回值常数值选择按钮vbOK1选择了OKvbCancel2选择了CancelvbYes6选择了YesvbNo7选择了NO例9-5在窗体上添加一个命令按钮,当单击该按钮后承受用户输入的三角形三边长,并求出周长后输出步骤:新建一个窗体,添加一个命令按钮mand0PrivateSubmand0_Click()'定义a,b,c,s为单精度变量,a,b,c为三边长,s为周长DimaAsSingle,bAsSingle,cAsSingle,sAsSingle'利用输入对话框承受键盘输入的值,并用Val()函数转把字符串转换成数值a=Val(InputBo*("请输入三角形的第一个边长:"))b=Val(InputBo*("请输入三角形的第二个边长:"))c=Val(InputBo*("请输入三角形的第三个边长:"))s=a+b+cMsgBo*"三角形的周长是:"&sEndSub在命令按钮的属性窗口中为其添加代码:如图切换到窗体视图,单击命令按钮,在弹出的对话框中依次输入三个值,例如3、4、5则弹出一个消息框,显示三边长的结果:三、赋值语句格式:变量名=表达式功能:把右边表达式的值给左边的变量。例如*=2+1,*=*+1说明:变量要先定义才能使用赋值号两边的数值必须兼容,即数据类型尽量一致。否则容易出错例如:Dim*asInteger,yasSingle,zasString‘定义*为整数,y为单精度数,z为文本字符*=3.5Y=4Z=〞ACCESS〞第二句*定义为整数,却给了个小数3.5,此时*会取4,第三句y是单精度数,给了整数4,但系统可以转换成4.000再给变量y,所以是合法的。第四句z是字符变量,所以等式右边只能赋值一个字符串。等号左边只能有一个变量,右边可以是含这个变量的表达式,例如*=*+1正确,但*+1=*就不正确了。赋值号右边的计算结果必须在左边变量的表示围之,否则系统会提示出错,例如:Dim*asInteger‘定义*为整型变量*=40000整型变量*最大只能取值32767,所以40000就超出了整型数据表示的最大值,程序运行到这一句时,系统会提示出错。变量被两次赋值,则新值冲掉旧值,例如*=2*=3*=*+2*="例9-6在窗体上添加一个命令按钮,当单击该按钮后承受用户输入的长方形的长和宽,计算其面积并输出计算结果。步骤:1、新建窗体,并在上面添加一个命令按钮,按钮名称为"命令0〞,在按钮上添加代码如下:PrivateSub命令0_Click()'定义变量a,b,s为单精度变量,a,b表示长方形的长和宽,S表示面积DimaAsSingle,bAsSingle,sAsSingle'通过InputBo*函数输入边长,同时将文本型数据转换成数值型a=Val(InputBo*("请输入长方形的第一个边长:"))b=Val(InputBo*("请输入长方形的第二个边长:"))s=a*bMsgBo*"长方形面积为:"&sEndSub2、切换到窗体视图,单击命令按钮,会出现一个输入框,要求你输入长方形的两个边长,输入边长后,单击"确定〞按钮,即弹出一个消息框,显示长方形的面积。注意:输入程序代码时,要在英文半角下输入,各关键词之间要有空格〔"英文半角〞输入状态下的空格!〕四、顺序构造在高级程序设计语言中,其语句执行都有一定的先后顺序,总体可以分为顺序构造语句〔按语句的先后顺序执行〕、条件分支语句〔根据条件的成立来确定执行哪一个分支〕、循环语句〔*个条件成立时反复执行*一段程序〕。顺序构造是最简单的一种构造,这种构造让语句按先后顺序执行,以完成简单的功能。A=2B=3T=A’把A的值放到T中,则T=2A=B’把B的值放到A中,则A=3B=T’把T的值给B,则B=2例9-7在窗体上放一个命令按钮和两个文本框,在两个文本框中分别输入两个不同的值,单击命令按钮后交换这两个文本框中的数据。分析:假设a=2,b=3,利用赋值语句总是把等号右边值给左边的特性,借助中间变量,可以让a,b的值互换。步骤:新建一个窗体,窗体中放两个文本框和一个命令按钮,名称分别是"文本1〞、"文本2〞、"命令0〞,〔在属性窗体设置这些控件的名称,在代码程序中引用〕PrivateSub命令0_Click()DimaAsString,bAsString,tAsString'定义a,b,t为文本变量a=文本1.Valueb=文本2.Valuet=aa=bb=t文本1.Value=a文本2.Value=bEndSub选中命令按钮,在属性窗口中添加这个按钮的代码如下:切换到窗体视图,在文本框中输入两个值,例如2、3,单击命令按钮,可看到文本框中两个数实现了交换。例9-8在窗体上放一个命令按钮和两个文本框,第一个文本框中输入用分钟表示的时间,单击命令按钮则把这个时间转换成以小时和分钟表示的时间。步骤:新建一个窗体,放一个命令按钮和两个文本框,定义按钮和文本框的名称为命令0、文本1、文本2选中命令按钮,在属性窗口中切换到"事件〞选项下,在"单击〞栏选"事件过程〞,单击这一栏后面的按钮,输入以下代码:PrivateSub命令0_Click()ConstaAsInteger=60'声明a为常量60Dim*AsInteger,yAsInteger,zAsInteger'定义*,y,z为整型变量*=文本1.Value'输入的分钟数y=*\a'*\a表示"*整除a〞的运算,和*/a不同。z=*Moda'*moda表示求"*除a的余数〞文本2.Value=y&"小时"&z&"分钟"'注意等式右边用用空格分开各个量。EndSub3、切换到窗体视图下,输入一个分钟数例如:100,单击命令按钮就可转换成1小时40分钟。说明:常量的声明:常量是一种特殊的量,它的值设置后就不能更改或赋于新值,可以在代码中的任何地方使用常量代替实际的值,对于程序中经常出现的常数值且难以记忆无明确意义的数值,使用常量声明可增加代码的可读性和可维护性。格式:Const常量名[as类型名]=表达式2、本程序中用到几种运算,常见的运算见下表:符号描述例如+加-减*乘4*3=12/除7/2=3.5\整除7\2=3(只取商的整数局部)Mod求余9Mod6=3^求幂10^3=1000五、分支构造分支构造语句有两种:if语句和SelectCase语句if语句单分支:格式:if条件表达式then执行语句1[Else执行语句2]Endif功能:条件表达式成立就执行语句1,不成立就执行语句2说明:条件语句以if开头,以Endif完毕,if和Endif要成对出现。例9-9在窗体上放一个命令按钮和3个文本框,在前两个文本框中输入两个整数,单击命令按钮比拟这两个文本框中输入的整数的大小,并将较大的数放到第三个文本框。分析:输入的两个数存放到*,y中,用z存放较大的数:如果*>y,则z=*,否则就让z=y步骤:新建窗体,放置三个文本框,及一个命令按钮,分别选中这些控件,在属性窗口中设置文本框及按钮名称为文本1、文本2、文本3、命令0PrivateSub命令0_Click()Dim*AsInteger,yAsInteger,zAsInteger*=文本1.Valuey=文本2.ValueIf*>yThenz=*Elsez=yEndIf文本3.Value=zEndSub选中按钮,在其属性窗口的中切换到"事件〞选项,再在"单击〞一栏中选"事件过程〞,单击这一栏后面的按钮,输入以下代码:切换到窗体视图,在文本框1、2中输入两个数〔例如2,6〕,单击"确定〞则在第三个文本框中显示较大的数。。如果从有三种或三种以上的条件选择1种,则要用下面的条件语句:格式:If条件表达式1then执行语句1Elseif条件表达式2then执行语句2……Else执行语句nEndif注意 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 上错误,此处的Elseif没有空格〔在Else和if之间〕例9-10在窗体上放一个命令按钮和两个文本框,单击命令按钮根据窗体中"成绩〞文本框输入的成绩,判断成绩等级,并显示在窗体的"等级〞文本框中。判定方法:85分以上优秀,75分至85分良好,60至75分及格,60分以下不及格。分析:由于一个成绩有四个等级选择,所以要用到多种条件选择语句步骤:新建一个窗体,放一个命令按钮及两个文本框,在相应的属性窗口设置它们的名称分别是"命令0〞、"成绩〞、"等级〞在按钮0上添加程序代码如下:关闭程序窗口,切换到窗体视图下,输入不同的分数,单击"确定〞按钮后可显示不同的等级:多种条件选择语句除了用以上的语句格式外,还有一种更加简洁的分支语句构造SelectCase语句SelectCase语句格式:SelectCase变量表达式Case表达式列表1执行语句1Case表达式列表2执行语句2……CaseElse执行语句nEndSelect功能:第一句中变量表达式中的值满足哪个表达式列表,就执行哪个语句。例9-11将例9-10中的if语句改成SelectCase表示。步骤:1、修改命令按钮上程序代码如下:关闭程序窗口,切换到窗体视图下输入不同的成绩值进展调试。六、循环构造如果在程序中需要重复执行*段代码,可用循环构造VBA中提供了三种循环构造Do…Loop循环格式:Do[[While/Until]条件表达式]中间需要反复执行的语句称为循环语句体…………Loop功能:根据DoWhile后面的条件表达式来重复执行循环语句体假设干次,直到表达式的值不再成立时,执行Loop后面的语句。例9-12在窗体上放一个命令按钮,当单击该按钮时,计算1+2+3+100的结果,并利用消息框显示出来步骤如下:新建一个窗体,添加一个按钮,在属性窗口中设置名称为"命令0〞PrivateSub命令0_Click()DimsAsInteger,*AsIntegers=0:*=1DoWhile*<=100s=s+**=*+1LoopMsgBo*"1+2+...+100的值为:"&sEndSub在按钮上添加代码如下:关闭程序编辑窗口,切换到窗体视图,单击命令按钮,则弹出计算结果。想一想:如果改成求1×2×3…×10的值,该怎样进展?如果改成在文本框中输入一个值*,求1+2+…*的值,该怎样进展?例9-13在窗体上放一个命令按钮,当单击该命令按钮时,求满足不等式1+2+3+…+n<=100的最大整数n,并将所求的n输出在消息框中。(最终满足条件的n为13)PrivateSub命令0_Click()DimsAsInteger,nAsIntegers=0:n=0DoWhiles<=100n=n+1s=s+nLoop'注意退出循环时n(比满足S<100的那个n)增加了1MsgBo*"满足1+2+…+n<=100的最大整数n为"&n-1EndSub步骤:翻开例9-12,修改程序如下:这一题我们也可以利用Do…LoopUntil,其功能是直到…条件表达式成立退出例9-14,利用Do…LoopUntil改写例9-13PrivateSub命令0_Click()DimsAsInteger,nAsIntegers=0:n=0Don=n+1s=s+nLoopUntils>100'注意退出循环时n(比满足S<100的那个n)增加了1MsgBo*"满足1+2+…+n<=100的最大整数n为"&n-1EndSub〔二〕For…Ne*t循环格式:For循环变量=初值to终值[step增量]循环语句体…………Ne*t循环变量功能:其执行过程分以下两步:〔1〕循环变量取初值后,执行循环体〔2〕到Ne*t循环变量时,循环变量加上增量,看是否超过终值,如超过则退出循环,否则继续执行循环体。说明:step1可省略不写〔即循环变量增量为1时可省略step项不写〕例9-15编写一个过程,求0到100之间的所有奇数的和分析:过程就是在程序中反复用到的一小段程序,定义成过程后,后面再用到这段程序只要输入过程名即可调用这段程序步骤:1、新建一个窗体,添加一个按钮,进入按钮的代码编辑窗口:修改此处为过程名L15〔〕2、在编辑窗口上修改并添加代码如下:〔见上图〕PrivateSubL15()’定义过程L15DimsAsInteger,iAsIntegers=0Fori=1To100Step2s=s+iNe*tiMsgBo*"1+3+5+...+99="&sEndSub切换到窗体设计视图,选中按钮,在属性窗口中仍然选"事件〞选项卡下的"单击事件〞栏中选"事件过程〞,在编辑窗口中添加程序如下:5、切换到窗体视图,单击按钮则调用过程L15,执行过程L15的程序,效果如下:注:任何一种循环语句都可以用另一种循环语句代替,上面的FOR…Ne*t循环程序用D0While…Loop循环也可行,程序改动如下:DimsAsInteger,iAsIntegers=0i=1dowhilei<100s=s+ii=i+2loopMsgBo*"1+3+5+...+99="&s例9-16编写一个过程,输入一个整数n,然后求1!+2!+…+n!,然后在命令按钮中调用这个过程仿例9-15即可。过程程序如下:PrivateSubPro916()DimiAsInteger,jAsInteger,nAsIntegerDimtAsLong,sAsLong't用来存放阶乘数,s用来存放阶乘的和,由于值太大,所以定义为长整型变量。t=1:s=0n=inputb*("请输入一个整数n:")Fori=1Tont=1'保证每次阶乘从1开场计算Forj=1Toit=t*jNe*tjs=s+tNe*tiMsgBo*"1!+2!+...+"&n&"!="&sEndSub例9-17编写一个过程,从键盘输入10个数,输出其中的最大数和最小数分析:此题可使用inputbo*函数承受用户输入的数字,由于输入的数据有10个,所以定义一个包含10个元素的数组A〔1〕、A〔2〕、…A〔10〕来存放这些数字,变量Ma*的初始值放A〔1〕,然后和A〔2〕到A〔9〕逐个比拟,只要有比A〔1〕大的数Ma*就存放这个数,这样Ma*就存放出最大的数;Min的初始值也存放A〔1〕,然后和A〔2〕到A〔9〕逐个比拟,只要有比A〔1〕小的数Min就存放这个数,这样Min就存放出最小的数。步骤:1、窗体上添加一个命令按钮,添加代码如下:(见下列图)选中按钮,添加单击按钮调用过程L17的代码〔见上图代码窗口的下半局部代码〕切换到窗体,单击命令按钮后,会提示输入数字,先后输入10个不同的数字后,最后会显示最大数及最小数,〔这里可输入1、2、3、7、8、9、10、4、5、6〕
本文档为【VBA程序设计基础】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
pyaiw
擅长施工管理及辅助设计,并对施工技术、质量与安全的深入研究
格式:doc
大小:938KB
软件:Word
页数:15
分类:教育学
上传时间:2022-02-20
浏览量:1