《VB过程与函数ppt课件.ppt》由会员分享,可在线阅读,更多相关《VB过程与函数ppt课件.ppt(40页珍藏版)》请在三一办公上搜索。
1、Visual basic与SQL Server 2005 清华大学出版社,本章要点,过程的有关术语过程的定义与调用使用过程时的参数传递过程的嵌套与递归调用 多窗体与Sub Main过程用户自定义函数的使用,Visual basic与SQL Server 2005 清华大学出版社,在VB中自定义过程分为以下几种:以“sub”保留字开始的为子过程;以“function”保留字开始的为函数过程;以“Property”保留字开始的为属性过程;以“Event”保留字开始的为事件过程。常用的过程有两种类型,通用过程和事件过程。事件过程与某个具体对象有关,它是能被对象识别的一个预先定义好的动作,前面各章学习
2、和使用的过程都是事件过程,它是VB应用程序的主体。而通用过程与对象无关,它能被不同的事件过程或程序代码调用,能提高编程的效率。VB提供了两种通用过程,Sub过程(子程序)和Function过程(函数)。过程需要编写相应的代码,称为过程的定义。通用过程可以在代码窗口的通用声明下定义,也可以在标准模块中定义。定义好的通用过程就像完工的集成块,还需要将它组装到产品中去才能发挥作用,在应用程序中使用定义好的过程,称为过程的调用。,11.1 过程,Visual basic与SQL Server 2005 清华大学出版社,在定义过程时,可以在代码窗口的通用声明中,直接输入过程的所有代码;也可以选中代码窗口
3、后,选择“工具”“添加过程”命令,在“添加过程”对话框中输入过程名,选择好类型和范围后确定,来添加过程头,然后再输入过程体。一、Sub过程的定义 语法格式为 Static Private Public Sub过程名(参数表)语句块 Exit Sub End Sub Sub过程的说明:(1)Sub过程必须以Sub开头,End Sub结束。Static:表明这个过程中的局部变量是静态的,即过程执行完成后,过程内的变量的值将保留下来。如果没有Static,则局部变量是动态的,即过程执行完成后,过程内的变量的值将清空(0或空串)。,11.1.1 Sub过程,Visual basic与SQL Serve
4、r 2005 清华大学出版社,(2)参数表:传送数据进入Sub的变量或数组,参数之间用逗号分隔。每个参数的格式为:ByVal 变量名()As 类型 类型就是Integer、Single等,缺省则为变体型。ByVal:表明该参数是“传值”(Passed By Value)参数,缺省时(相当于ByRef)表明该参数是“引用”(Passed By Reference)参数。一般而言:用不加ByVal的“引用”参数即可。(3)Exit Sub用于在必要时中途退出过程。(4)Sub过程不能嵌套。即Sub过程的过程体内不能包含内部的Sub过程。但调用时可以嵌套。(5)建立通用Sub过程 通用Sub不属于任
5、何一个事件驱动过程,所以不能把通用Sub放在事件过程内部,应该放在事件过程外面,与事件过程独立开来,即通用Sub与事件过程是同一级别的。,11.1.1 Sub过程,Visual basic与SQL Server 2005 清华大学出版社,11.1.1 Sub过程,二、Sub过程的调用调用Sub过程一般可用以下两种方法。(1)用Call语句格式:Call 过程名(实参)如果是无参过程,括号可以省略。例如:Call Proc 调用无参过程Proc Call Try(a,b)调用有参过程Try(x,y)(2)过程名 实参表。把过程名作为一个独立的语句与Call的区别:去掉Call,去掉实参的括号。例
6、如:Proc 调用无参过程Proc Try a,b 调用有参过程Try(x,y)注意,在第二种调用方法中,省略了Call,此时不需要小括号,否则会出错。,Visual basic与SQL Server 2005 清华大学出版社,11.1.1 Sub过程,例11.1 求1-2+3-4+.+n的值。1、界面设计 程序的界面由两个标签、两个文本框(一个用于输入、一个用于输出)和两个按钮构成。,Visual basic与SQL Server 2005 清华大学出版社,11.1.1 Sub过程,2、代码分析与设计 n的变化规则是偶数为负,奇数为正,可加一个专门的符号位来实现,只要符号位与n的初值保存一致
7、,然后n增加1,符号位就取反即可。程序主要代码如下:Private Sub sum_num(n As Integer,s As Long)Dim i As Integer,t As Integer s=0 t=1 For i=1 To n s=s+i*t t=-t Next iEnd Sub,Private Sub Command1_Click()Dim n As Integer,i As Integer,s As Long n=Val(Text1.Text)sum_num n,s Text2.Text=sEnd SubPrivate Sub Text1_KeyPress(KeyAscii A
8、s Integer)If KeyAscii=13 Then Command1_Click End Sub,Visual basic与SQL Server 2005 清华大学出版社,11.1.2 函数(Function过程),在VB中有两类函数,即标准函数和用户自定义函数。标准函数是指系统已经做出定义的函数,VB的标准函数按函数功能可分为4类,即数学函数、字符串函数、日期和时间函数和转换函数。虽然VB提供了常用的标准函数,可以使用这些标准函数来实现某些数学计算或数据类型的转换,但许多应用程序常常需要自己来定义函数,以实现某种特定的计算。自定义函数是由用户按照指定的语法规则自己定义的函数。,Vis
9、ual basic与SQL Server 2005 清华大学出版社,11.1.2 函数(Function过程),一、函数的定义格式为:Static Private Public Function函数名(参数表)As类型 语句块 Exit Function 函数名=计算结果 End Sub说明:与Sub比较:大部分一样,定义方法也一样。主要的区别是:(1)函数名后多了As类型,限定函数结果的类型;(2)多了一句 函数名=计算结果。注意:必须有这一句才能把计算结果传给函数。,Visual basic与SQL Server 2005 清华大学出版社,11.1.2 函数(Function过程),二、函
10、数的调用 Function定义好以后,就成了一个与标准函数一样的函数,调用方法也与标准函数一样:函数名(自变量)调用函数一般可用以下三种方法。(1)直接调用。将函数名和相应的实参放在一个表达式中即可。当需要接收过程的返回值时,只能使用这种调用方法。例如:Y=Sqr(16)(2)Call语句调用。使用Call语句调用Function过程的方法与Sub的调用方法相似,此时,Function过程的返回值将被丢失。一把不用这种方法。(3)无参数直接调用。,Visual basic与SQL Server 2005 清华大学出版社,11.1.2 函数(Function过程),【例11.2】将例11.1改用
11、函数来实现。代码分析与设计本程序的基本思路与例9.1是一样的,代码差别也不大。在Sub过程中,结果通过参数s带回,而Function过程则通过函数本身返回。程序代码如下(相同部分省略):Private Function sum_num(n As Integer)As Long Dim i As Integer,t As Integer,s As Long s=0 t=-1 For i=a To ns=s+i*t t=-t Next i sum_num=sEnd Function,Private Sub Command1_Click()Dim n As Integer,s As Long n=V
12、al(Text1.Text)s=sum_num(n)此时不能使用第二种调用方法 Text2.Text=sEnd Sub,Visual basic与SQL Server 2005 清华大学出版社,11.1.3 过程与函数的区别,1过程以sub开头,而函数以function开头。2.当过程有多个返回值时,就应当用sub过程;当过程有一个返回值时,可以使用函数。3函数是通过函数名回送一个结果值。在函数的形式参数表后面要说明函数(即结果)的类型。而过程的结果由参数送回。4.函数体中至少要包括一个给函数赋值的语句。而过程不能给过程名赋值。5.函数的调用出现在表达式中。而过程的调用必须作为一个单独的语句。
13、6.形参没有具体的值,只代表了参数的个数、位置、类型;只能是简单变量,不能是常量、数组元素、表达式。,Visual basic与SQL Server 2005 清华大学出版社,11.2 参数传递,在调用一个有参数的过程,首先进行的是“形实结合”,即按传值传递或按地址传递方式,实现调用程序和被调用的过程之间的数据传递。通过参数传递,Sub过程或Function过程就能根据不同的变量执行同种任务。为了叙述方便,将形式参数简称为形参,实在参数简称为实参。在Visual Basic中传递参数有两种方式,即按值传递(Passed by Value)和按地址传递(Passed by refecence)。
14、按值传递参数时,传递的只是实参变量的副本。如果在被调过程中改变了形参值,只影响副本,而不会影响实参变量本身。即当控制返回调用程序时,实参变量保持调用前的值不变。在定义过程时,若形参名前面没有关键字“ByVal”,即形参名前面缺省修饰词,或有“ByRef”关键字时,则指定了它是一个按地址传递的参数。按地址传递参数时,把实参变量(简单变量、数组元素、数组以记录等)的地址传送给被调过程。因此实参变量的地址和与之结合的形参地址是相同的,也就是说形参和实参共用内存的同一“地址”,即共享同一个存储单元。这样在被调过程中的形式参数值一旦被改变,相应的实参值也跟随着被改变了。,Visual basic与SQL
15、 Server 2005 清华大学出版社,11.2.1 形式参数与实际参数,形式参数是指在定义通用过程时,出现在sub或function语句中的变量,是接收传送子过程的变量。形式参数表的各个变量之间用逗号分隔。实际参数是指在调用sub或function过程时,传送给sub或function过程的常量、变量或表达式。实参表可由常量、表达式、有效的变量名、数组名组成,实参表中各参数用逗号分隔。简单地说,无论是Sub还是Function,参数是用来传送数据的。定义时的参数叫形式参数(形参),调用时的参数叫实际参数(实参)。,Visual basic与SQL Server 2005 清华大学出版社,1
16、1.2.1 形式参数与实际参数,例如:Private Sub Form_Click()Dim a as intger,b as integer,c as integer A=5:b=3:c=9 ClsPrint a;b;cCall prod(a),(b),(c)实际参数Print a;b;cEnd SubSub prod(a as intger,b as integer,c as integer)形式参数Print a;b;ca=6:b=8:c=a*bprint a;b;cEnd Sub,Visual basic与SQL Server 2005 清华大学出版社,11.2.2 参数传递,参数传递
17、的方式有两种,按值传递和按地址传递,并且只能有实参传递给形参。如果CALL语句中的实际参数是常量或表达式,或者定义过程时选用ByVall关键字,就可以按值传递;如果CALL语句中的实际参数为变量,或者定义过程时选用ByRef关键字,就可以按地址传递。否则缺省按地址传递参数。一、按值传递参数 按值传递参数时,传递的只是变量的副本。如果过程改变了这个值,则所作变量只影响副本而不会影响变量本身。当要求变量按值传送时,可以先把变量变成一个表达式,把变量转换成表达式的最简单的方法就是把它放在括号内。或者定义过程时用ByVal关键字指出参数是按值来传递的。例如:Sub Post(ByValnumasInt
18、eger)例如:运行下面给出的程序,理解按值传递参数。,Visual basic与SQL Server 2005 清华大学出版社,11.2.2 参数传递,例如:运行下面给出的程序,理解按值传递参数。Private Sub Form_Click()Dim a as intger,b as integer,c as integer a=5:b=3:c=9 ClsPrint a;b;c Call prod(a),(b),(c)函数调用Print a;b;cEnd SubSub prod(a as intger,b as integer,c as integer)Print a;b;ca=6:b=8:
19、c=a*bprint a;b;cEnd Sub,Visual basic与SQL Server 2005 清华大学出版社,11.2.2 参数传递,二、按地址传递参数按地址传参数,就是让过程根据变量的内存地址去访问实际变量的内容,即形式参数与实际参数使用相同的内存地址单元,这样通过子过程就可以改变变量本身的值。系统缺省按地址传递参数。在传递调用时,实际参数必须是变量,常量或表达式无法传址。例如:运行下面给出的程序,理解按地址传递参数。Private Sub Form_Click()Dim a as intger,b as integer,c as integer A=5:b=3:c=9ClsPr
20、int a;b;cCall prod(a,b,c)Print a;b;cEnd SubSub prod(x as intger,y as integer,z as integer)Print x;y;zx=6:y=8:z=x*yprint x;y;z,Visual basic与SQL Server 2005 清华大学出版社,11.2.2 参数传递,三、按值和按地址混合传送参数例如:Private Sub Form_Click()Dim x as intger,y as integer X=8:y=3Call test(5,x,y+1)5传值,X传址,Y+1传值Print“主程序”,5,x,yE
21、nd SubSub test(a as intger,b as integer,c as integer)Print“子程序”,a,b,c A=2:b=4:c=9End Sub,Visual basic与SQL Server 2005 清华大学出版社,11.3过程的嵌套与递归调用,在一个过程中调用另一个过程,称为过程的嵌套调用。如果一个过程直接或间接调用其自身,称为过程的递归调用,它是一种特殊的嵌套调用。,Visual basic与SQL Server 2005 清华大学出版社,11.3.1 过程的嵌套调用,Visual Basic的过程定义是互相平行和独立的,也就是说在定义过程时,一个过程内
22、不能包含另一个过程。虽然不能嵌套定义过程,但Visual Basic中可以嵌套调用过程,也就是主程序可以调用子过程,在子过程中还可以调用另外的子过程,这种程序结构称为过程的嵌套。如图11-2所示。,Visual basic与SQL Server 2005 清华大学出版社,11.3.1 过程的嵌套调用,Visual basic与SQL Server 2005 清华大学出版社,11.3.2 过程的递归调用,Visual Basic的过程具有递归调用功能。递归分为两种类型,一种是直接递归,即在过程中调用过程本身;另一种是间接递归,即间接地调用一个过程,例如第一个过程调用了第二个过程,第二个过程又回过
23、头来调用第一个过程。递归调用在完成阶乘运算、级数运算、幂指数运算等方面特别有效。例11.7 用递归的方法计算n!。分析:自然数n的阶乘可以递归定义为:递归的结束条件为:n=0时,n!=1。建立好的用户界面如图11-4所示。,Visual basic与SQL Server 2005 清华大学出版社,11.3.2 过程的递归调用,Visual basic与SQL Server 2005 清华大学出版社,11.3.2 过程的递归调用,求阶乘的递归过程Fact的代码为:Private Function Fact(n As Integer)As Long If n 0 Then Fact=n*Fact(
24、n-1)Else Fact=1 End If End Function 按钮的Click事件代码为:Private Sub Command1_Click()Dim n As Integer,m As Long n=Val(Text1.Text)If n 0 Then Exit Sub m=Fact(n)Label1.Caption=m End Sub,Visual basic与SQL Server 2005 清华大学出版社,11.3.2 过程的递归调用,Visual basic与SQL Server 2005 清华大学出版社,11.4过程和变量的作用范围,VB应用程序(通常称为工程)的组织结构
25、,它由窗体模块、标准模块和类模块组成。VB程序代码就保存在窗体模块文件(*.Frm)、标准模块文件(*.Bas)或类模块文件(*.Cls)中。它们形成了工程的一种模块层次结构。窗体模块(文件扩展名为.frm),可以包含处理事件的过程、通用过程以及变量、常数、类型和外部过程的窗体级声明。如果要在文本编辑器中观察窗体模块,则还会看到窗体及其控件的描述,包括它们的属性设置值。写入窗体模块的代码是该窗体所属的具体应用程序专用的;它也可以引用该应用程序内的其它窗体或对象。标准模块(文件扩展名为.bas),可以包含变量、常数、类型、外部过程和全局过程的全局(在整个应用程序范围内有效的)声明或模块级声明。写
26、入标准模块的代码不必绑在特定的应用程序上,则在许多不同的应用程序中可以重用标准模块。类模块(文件扩展名为.CLS),在 Visual Basic 中类模块是面向对象编程的基础。可在类模块中编写代码建立新对象。这些新对象可以包含自定义的属性和方法。实际上,窗体正是这样一种类模块,在其上可安放控件,可显示窗体窗口。,Visual basic与SQL Server 2005 清华大学出版社,11.4.1 过程的作用范围,通用子过程和函数过程既可写在窗体模块中也可写在标准模块中,在定义时可选用关键字Private(局部)和Public(全局),来决定它们能被调用的范围。按过程的作用范围来划分,过程可分
27、为:模块级过程和全局级过程1、窗体/模块级过程:加Private关键字的过程,只能被定义的窗体或模块中的过程调用。2、全局级过程:加Public关键字(或缺省)的过程,可供该应用程序的所有窗体和所有标准模块中的过程调用。,Visual basic与SQL Server 2005 清华大学出版社,11.4.2 变量的作用范围,一、变量的分类 在VB中,由于可以在过程中和模块中声明变量,根据定义变量的位置和定义变量的语句不同,变量可以分为:局部变量(过程级变量)、窗体/模块级变量(私有的模块级变量,能被本模块的所有过程和函数使用)和全局级变量(公有的模块级变量)。1、局部变量:在过程内部使用 Di
28、m 或者 Static 关键字来声明的变量,只在声明它们的过程中才能被访问或改变该变量的值,别的过程不可访问。所以可以在不同的过程中声明相同名字的局部变量而互不影响。例如:Private Sub Form_Load()Dim n as integern=10End SubPrivate Sub From_Click()Dim n as integerPrint“n=“;nEnd Sub,Visual basic与SQL Server 2005 清华大学出版社,11.4.2 变量的作用范围,2、窗体/模块级变量:在“通用声明”段中用Dim语句或用Private语句声明的变量,可被本窗体/模块的任
29、何过程访问。但其他模块却不能访问该变量。例如:在“通用声明”段声明如下变量Private s As StringDim a As Integer,b As Single 全局变量全局变量也称公有的模块级变量,在窗体模块或标准模块的顶部的“通用”声明段用Public关键字声明,它的作用范围是整个应用程序,即可被本应用程序的任何过程或函数访问。例如:Public a As Integer,b As single用下表来表示着三种变量的区别。,Visual basic与SQL Server 2005 清华大学出版社,11.4.2 变量的作用范围,二、变量的作用范围 从变量的作用空间来说,每个变量均有
30、其作用域;从变量的作用时间来看,每个变量均有自己的生存期。1.变量的作用域 变量的作用域是指变量的有效范围。按变量的作用域不同,可将变量分为局部变量和全局变量。根据变量的声明位置不同,变量可分为过程级变量和模块级变量。(1)过程级变量 在一个过程内部定义的变量称为过程级变量,这种变量只能在定义该变量的过程中使用,一般用Dim来定义。(2)模块级变量 模块级变量可在窗体模块的通用声明中声明,也可在标准模块中声明。一般可用Dim、Private、Public关键字。在标准模块中,还可用Global关键字。Dim:定义模块级的局部变量。Private:定义模块级私有变量,它只能在模块内部使用,仍属于
31、局部变量。Public:定义模块级公有变量,标准模块中的模块级公有变量,可以在整个应用程序中直接使用,属于全局变量;窗体模块的模块级公有变量,必须用“窗体名.公有变量名”的形式才能在别的模块中使用,不能直接使用。Global:定义全局变量。,Visual basic与SQL Server 2005 清华大学出版社,11.4.2 变量的作用范围,2.变量的生存期 变量的生存期是变量占用内存的时间。按变量的生存期不同,可将变量分为动态变量、静态变量。(1)动态变量 当程序运行到变量所在的过程时,才给动态变量分配内存单元,当过程运行结束后,动态变量所占的内存单元会被立即释放,其值丢失。每次进入变量所
32、在的过程时,动态变量都要重新初始化。(2)静态变量 静态变量与动态变量完全不同,当变量所在过程运行结束后,变量仍然占用相应的内存单元,其值一直保存,当以后再次运行变量所在过程时,不会重新初始化。过程级局部变量一般用Static关键字,将其声明为静态变量。,Visual basic与SQL Server 2005 清华大学出版社,11.4.2 变量的作用范围,3.使用过程中的注意事项(1)公用变量与局部变量同名 在不同过程中定义同名变量,它们互不影响,但若在一过程中定义使用了与全局变量同名的变量,则就应注意。注意:在过程中,如果定义了与模块级变量(在通用部分使用Private或Dim声明的变量)
33、,则在该过程内不能引用同名的模块级变量。,Visual basic与SQL Server 2005 清华大学出版社,11.4.2 变量的作用范围,(2)全局变量同名 如果不同模块中的全局变量使用同一名字,则通过同时引用模块名和变量名就可以在代码中区分它们。例如,如果有一个在 Form1 和 Module1 中都声明了公用的 Integer 变量 intX,则把它们作为 Module1.intX 和Form1.intX 来引用便得到正确值。也就是说如果不同模块中的全局变量使用同一名字,引用时就需要使用“模块名.变量名”的形式来区分它们。,Visual basic与SQL Server 2005
34、清华大学出版社,11.5 多窗体与Sub Main过程,当应用程序功能较强和分类较多,程序和用户的交互频繁时,如果只用一个窗体和用户进行交互,一方面难以进行合乎美观原则的设计,另一方面分类工作很难,设计出来的界面不符合友好原则。这时最好使用多重窗体程序设计,增强程序界面的友好性。多窗体指的应用中有多个窗体,它们之间没有绝对的从属关系。每个窗体的界面设计与单窗体的完全一样,只是在设计之前应先建立窗体,这可以通过菜单“工程”/“添加窗体”命令实现。程序代码是针对每个窗体编写的,当然,应注意窗体之间存在的先后顺序和相互调用的关系。所以,多重窗体实际上是单一窗体的集合,而单一窗体是多重窗体程序设计的基
35、础。,Visual basic与SQL Server 2005 清华大学出版社,11.5.1 多窗体应用程序,分析应用要求,将其功能划分为不同的几部分,分别创建各个窗体、模块在创建窗体时,除各窗体自身要完成的功能外,还要考虑窗体之间的调用关系点击工程/属性菜单,在启动对象中选择应用运行时首先执行的对象运行应用程序,检验应用及各窗体的运行情况,Visual basic与SQL Server 2005 清华大学出版社,11.5.1 多窗体应用程序,1、多窗体程序设计常用的方法在单窗体程序设计中,所有的操作都在一个窗体中完成,不需要在多个窗体中切换。而在多窗体程序中,需要打开、关闭、隐藏或显示指定的
36、窗体,这可以通过相应的语句和方法来实现。在多窗体程序设计经常用到下面四种方法:Load,Show Hide和Unload。(1)Load方法它的语法结构如下:Load 窗体名称使用Load方法调用的窗体被存入内存,并不显示出来,同时会产生一个Form_Load()事件。例如:Load Form2 将Form2窗体存入内存(2)Show方法它的语法结构如下:窗体名称.ShowShow方法用来显示被调用的窗体。Show方法兼有装入和显示两种功能,也就是说,在执行Show方法时,如果窗体不在内存中,则Show方法会自动的把窗体调入内存,然后再显示出来。例如:Load Form2Form2.Show
37、将Form2存于内存,并显示Form2窗体,Visual basic与SQL Server 2005 清华大学出版社,11.5.1 多窗体应用程序,(3)Hide方法它的语法结构如下:窗体名称.Hide使用Hide方法会隐藏被调用的窗体,既不在屏幕上显示,但仍在内存中(与Unload方法不同),被调用的窗体中的属性等已经处于无效的状态。例如:Form1.HideForm2.Show 将Form隐藏,并显示Form2窗体(4)Unload方法它的语法结构如下:Unload 窗体名称使用Unload方法会清除内存中指定的窗体,与此窗体中的变量和属性等都会处于无效的状态,在移去窗体的同时会产生一个F
38、orm_QueryUnload()事件。例如:Form1.ShowUnload Form2显示Form1窗体,从内存中移去Form2窗体。,Visual basic与SQL Server 2005 清华大学出版社,11.5.1 多窗体应用程序,2、一个多窗体程序设计示例下面就以一个示例来说明如何运进多窗体的程序设计。(1)启动新工程1)设置属性2)添加控件在空白的窗体上添加如下控件:五个Label控件、四个TextBox控件和两个CommandButton控件。(2)添加窗体 选择菜单“工程(Project)”/“添加窗体(add form)”命令,弹出对话框,在添加窗体的对话框中选择“窗体项
39、,单击打开按钮,系统就会自动的向原有的工程中添加一个窗体。1)添加控件 在新的窗体上放置一CommandButton控件,作用是在隐藏新增的窗体的同时显示原有的窗体。则窗体如下:2)添加代码在继续按钮的Command1_Click()事件中添加下列代码:Private Sub Command1_Click()Form2.Hide 隐藏窗体2 Form1.Show 显示窗体1End Sub 程序说明:在窗体Form2被显示的过程中,单击继续按钮,就会激活Command1_Click()事件,然后通过Form2.Hide 和Form2.Show两条语句实现隐藏窗体和显示窗体的功能。,Visual
40、basic与SQL Server 2005 清华大学出版社,11.5.1 多窗体应用程序,(3)添加说明模块选择菜单工程/添加模块,就会弹出对话框:在模块的声明段中添加下列代码:Global a1 as SingleGlobal a2 as SingleGlobal a3 as SingleGlobal a3 as Single 定义四个全局变量,分别用来存储第一季度,第二季度、第三季度和第四季度的销售情况(4)添加程序代码1)窗体Form1中的代码如下:Private Sub Command1_Click()Form1.HideForm2.ShowEnd SubPrivate Sub Command2_Click()EndEnd SubPrivate Sub Text1_Change()a1=Val(Text1.Text)End Sub,