《VB程序设计强化复习主题讲座.ppt》由会员分享,可在线阅读,更多相关《VB程序设计强化复习主题讲座.ppt(28页珍藏版)》请在金锄头文库上搜索。
1、VB 语言程序设计(强化)函数过程和Sub过程函数过程和函数过程和Sub过程常用算法总结过程常用算法总结1.function函数过程函数过程2.Sub过程过程3.参数传递规则参数传递规则(值传递、地址传递值传递、地址传递)4.数组名作为函数参数数组名作为函数参数5.数组元素作为函数参数数组元素作为函数参数6.变量的作用域变量的作用域7.变量的生存期变量的生存期Private Sub Command1_Click()Dim i as integer, s as longFor i = 1 To 10 s = s + fact(i)Next iPrint 1!+2!+.+10!= & sEnd S
2、ub函数过程Private Function fact(ByVal k As Byte) As LongDim i%fact = 1For i = 2 To k fact = fact * iNext iEnd Function主题一:函数过程主题一:函数过程格式格式格式格式 Public | Private StaticPublic | Private Static FunctionFunction 函数名函数名函数名函数名( (形参列表形参列表形参列表形参列表) ) As As 数据类型数据类型数据类型数据类型语句块语句块语句块语句块函数名函数名函数名函数名= =表达式表达式表达式表达式E
3、xit FunctionExit Function 语句块语句块语句块语句块 End FunctionEnd Function函数体函数体函数体函数体说明说明说明说明PublicPublic公有过程,可被当前工程中其它窗体中的过公有过程,可被当前工程中其它窗体中的过公有过程,可被当前工程中其它窗体中的过公有过程,可被当前工程中其它窗体中的过 程调用程调用程调用程调用. . 调用格式为调用格式为调用格式为调用格式为: : 窗体名窗体名窗体名窗体名. .函数名函数名函数名函数名( ( 实参列表实参列表实参列表实参列表 ) )PrivatePrivate 私有过程,只能被其所在窗体的过程调用私有过程
4、,只能被其所在窗体的过程调用私有过程,只能被其所在窗体的过程调用私有过程,只能被其所在窗体的过程调用. . StaticStatic指定过程中局部变量的值保持不变指定过程中局部变量的值保持不变指定过程中局部变量的值保持不变指定过程中局部变量的值保持不变形参列表形参列表形参列表形参列表 ByValByVal | | ByRefByRef 参数名参数名参数名参数名 As As 数据类型数据类型数据类型数据类型, , 调用调用 函数名函数名(实参列表实参列表)也可以用也可以用 : Call 函数名函数名( 实参列表实参列表 ) 调用调用 , 这样调用将得不到返回值这样调用将得不到返回值.Public
5、 Sub Combination()Public Sub Combination() Dim m As Integer Dim m As Integer Dim n As Integer Dim n As Integer Dim Dim CmnCmn As Long As Long. . 输入输入输入输入 m, nm, n* * 错误错误错误错误1 *1 * CmnCmn = = nFactor(mnFactor(m) / ) / nFactor(nnFactor(n) * ) * nFactor(mnFactor(m - n) - n) Form1.Print Form1.Print 排列组
6、合数为排列组合数为排列组合数为排列组合数为; ; CmnCmnEnd SubEnd SubPublic Function Public Function nFactor(ByValnFactor(ByVal n As Integer) As Double n As Integer) As Double Dim i As Integer, temp As Double Dim i As Integer, temp As Double temp = 1 temp = 1 For i = 1 To n For i = 1 To n temp = temp * i temp = temp * i Ne
7、xt i Next i * *错误错误错误错误 2 *2 * nFactor(nnFactor(n) = temp) = temp * * 错误错误错误错误3 *3 *End Sub End Sub 该过程是用于计算在该过程是用于计算在该过程是用于计算在该过程是用于计算在mm个数据个数据个数据个数据中取出中取出中取出中取出n n个数据的排列组合值,个数据的排列组合值,个数据的排列组合值,个数据的排列组合值,计算公式为计算公式为计算公式为计算公式为 CmnCmn=m!/(n!*(m-n)!)=m!/(n!*(m-n)!)。编写过程用以验证一个偶数可以分解为两个素数编写过程用以验证一个偶数可以分解
8、为两个素数之和;之和;Isprime用以判断用以判断x是否是素数是否是素数Public Sub even()Public Sub even() 从键盘输入一个大于从键盘输入一个大于从键盘输入一个大于从键盘输入一个大于4 4的偶数,将它所有的不重复的分解式求出的偶数,将它所有的不重复的分解式求出的偶数,将它所有的不重复的分解式求出的偶数,将它所有的不重复的分解式求出 Dim x As IntegerDim x As Integer Dim i As Integer Dim i As Integer -1- -1- 保证保证保证保证x x是大于是大于是大于是大于4 4的偶数的偶数的偶数的偶数 x
9、= x = Val(InputBox(xVal(InputBox(x=)=) Loop Loop For i = 3 To x / 2 Step 2 For i = 3 To x / 2 Step 2 在不大于在不大于在不大于在不大于x x的奇数中找素数的奇数中找素数的奇数中找素数的奇数中找素数 -2-2- Form1.Print x; =; i; +; x - i Form1.Print x; =; i; +; x - i End If End If Next i Next iEnd SubEnd SubPublic Function Public Function Isprime(xIsp
10、rime(x As Integer) As Boolean As Integer) As Boolean Dim i As Integer Dim i As Integer -3- -3- For i = 2 To x - 1 For i = 2 To x - 1 -4- -4- IsprimeIsprime = False = False Exit For Exit For End If End If Next i Next iEnd FunctionEnd FunctionPublic Sub total()Public Sub total() 该过程是计算该过程是计算该过程是计算该过程是
11、计算s=7+77+777+(ns=7+77+777+(n个个个个7 7组成的数组成的数组成的数组成的数) ),并输出。,并输出。,并输出。,并输出。 Const n = 20Const n = 20 Dim s As Single Dim s As Single Dim i As Integer Dim i As Integer For i = 1 To n For i = 1 To n s = s + -1- s = s + -1- Next i Next i Form1.Print s=; s Form1.Print s=; sEnd SubEnd SubPublic Function n
12、umber( -2- ) As SinglePublic Function number( -2- ) As Single 该函数是求出该函数是求出该函数是求出该函数是求出n n个个个个7 7所组成的数。所组成的数。所组成的数。所组成的数。 Dim k As IntegerDim k As Integer number = 0 number = 0 For k = 1 To n For k = 1 To n -3- -3- Next k Next kEnd FunctionEnd Function-Option ExplicitOption Explicit判断某年是否是闰年判断某年是否是闰年
13、Public Sub Public Sub rnrn() () 该过程通过调用函数该过程通过调用函数该过程通过调用函数该过程通过调用函数isLeapYearisLeapYear判断某年是否是闰年,若是判断某年是否是闰年,若是判断某年是否是闰年,若是判断某年是否是闰年,若是, ,则打则打则打则打印印印印 今年是润年今年是润年今年是润年今年是润年 否则否则否则否则, ,打印打印打印打印 今年不是闰年今年不是闰年今年不是闰年今年不是闰年 。 Const year = 2023Const year = 2023 If -1- Then If -1- Then Form1.Print Form1.Pri
14、nt 今年是闰年今年是闰年今年是闰年今年是闰年 Else Else Form1.Print Form1.Print 今年不是闰年今年不是闰年今年不是闰年今年不是闰年 End If End If End Sub End Sub Function Function isLeapYear(yisLeapYear(y As Integer) As Boolean As Integer) As Boolean If -2- Or (-3- And -4-) Then If -2- Or (-3- And -4-) Then isLeapYearisLeapYear = False = False Els
15、e Else isLeapYearisLeapYear = True = True End If End IfEnd FunctionEnd Function主题二:主题二: Sub 过程过程格式格式格式格式 PublicPublic | Private Static | Private Static SubSub 过程名过程名过程名过程名( (形形形形参列表参列表参列表参列表) )语句块语句块语句块语句块 Exit SubExit Sub 语句块语句块语句块语句块 End SubEnd Sub过程体过程体过程体过程体说明说明说明说明PublicPublic公有过程,公有过程,公有过程,公有过
16、程,当前工程中使用当前工程中使用当前工程中使用当前工程中使用PrivatePrivate 私有过程,所在窗体中使用私有过程,所在窗体中使用私有过程,所在窗体中使用私有过程,所在窗体中使用 StaticStatic指定过程中局部变量的值保持不变指定过程中局部变量的值保持不变指定过程中局部变量的值保持不变指定过程中局部变量的值保持不变形参列表形参列表形参列表形参列表 ByValByVal | | ByRefByRef 参数名参数名参数名参数名 As As 数据类型数据类型数据类型数据类型, , 调用调用调用调用(1)(1)CallCall 过程名过程名过程名过程名( (实参列表实参列表实参列表实参
17、列表) )(2)(2)过程名过程名过程名过程名 实参列表实参列表实参列表实参列表例题例题例题例题l l注意:事件过程也是注意:事件过程也是注意:事件过程也是注意:事件过程也是 sub sub 过程过程过程过程, ,可以被调用可以被调用可以被调用可以被调用如如如如 call form_click()call form_click()写出下列程序运行时,单击窗体后窗体上的显示结果。写出下列程序运行时,单击窗体后窗体上的显示结果。Sub prnt(b() As String * 1, n As Integer) Dim i As Integer For i = 1 To n Print b(i);
18、Next i PrintEnd SubPrivate Sub Form_Click() Dim a(7) As String * 1, i As Integer For i = 1 To 7 a(i) = Chr(Asc(A) + i - 1) Next i For i = 7 To 4 Step -1 Call prnt(a, i) Next iEnd SubPrivate Sub sort(a() As Single, Private Sub sort(a() As Single, ByValByVal n As Byte) n As Byte)Dim I as byte,j as byt
19、e,k as byte,temp as singleDim I as byte,j as byte,k as byte,temp as single For i = 1 To n - 1 For i = 1 To n - 1 k = i k = i ForFor j = i + 1 j = i + 1 ToTo n n If a(j) a(k) Then k = j If a(j) a(k) Then k = j Next jNext j temp = a(k): a(k) = a(i) : a(i) = temp temp = a(k): a(k) = a(i) : a(i) = temp
20、Next i Next iEnd SubEnd Sub例例例例4-74-7编程,将数组编程,将数组编程,将数组编程,将数组 a()a()中中中中元素按值从大到小排序,要求元素按值从大到小排序,要求元素按值从大到小排序,要求元素按值从大到小排序,要求将数组排序编写为将数组排序编写为将数组排序编写为将数组排序编写为SUBSUB过程过程过程过程 Modify.bas模模块块中中的的MaxLine过过程程用用于于查查找找一一个个5行行4列列的的二二维维数数组组中中行行平平均均值值最最大大的的行行,并并将将该该行行所所有有数数据据调调整整到到第第一一行行的的位位置置。Modify.bas模模块块中中的的
21、DataProduce过过程程用用于于产产生生原原始始数数据据;Average过过程程用用于于计计算算各各行行的的平平均均值值;PrintArraay过过程程用用于于打打印印二二维维数数组组和和行平均值。行平均值。主题三:参数传递规则主题三:参数传递规则形参和实参形参和实参l l形参形参 (形式参数形式参数):过程:过程定义定义中的参数中的参数l l实参实参 (实在参数实在参数):过程:过程调用调用中的参数中的参数l l过程调用示例过程调用示例Private Private Private Private Sub Sub Sub Sub sort(a() sort(a() sort(a() s
22、ort(a() As As As As Single, Single, Single, Single, ByValByValByValByVal n n n n As As As As Byte)Byte)Byte)Byte)Call Call Call Call sortsortsortsort(b(), 6)(b(), 6)(b(), 6)(b(), 6)l l实参和形参必须实参和形参必须个数相同,类型一致个数相同,类型一致l l实参实参可以是可以是常量、变量、表达式、数组常量、变量、表达式、数组形参形参只能是只能是变量变量参数传递规则参数传递规则按值传递按值传递l l使用使用 ByVal
23、l l把实参变量的把实参变量的值值复制到形参变量中复制到形参变量中l l形参变量与实参变量使用不同的内存单元形参变量与实参变量使用不同的内存单元l l过程中对形参值的修改,不会影响对应实参原过程中对形参值的修改,不会影响对应实参原来的值来的值按地址传递按地址传递l l缺省属性(或用缺省属性(或用Byref)为为地址传递地址传递l l把实参变量的把实参变量的地址地址传给形参变量传给形参变量l l形参变量与实参变量共享同一个内存单元形参变量与实参变量共享同一个内存单元l l过程中修改了形参的值,同时也改变了实参的过程中修改了形参的值,同时也改变了实参的值值l l实参是实参是数组数组时,按地址传递时
24、,按地址传递l l实参是实参是常量、表达式常量、表达式时,虽然形参声明为传址,时,虽然形参声明为传址, 实际还是传值实际还是传值6AB实际参数实际参数形式参数形式参数Private Sub ff(ByRef x As Integer, ByVal y As Integer)x = x + 1y = y + 1Print x; yEnd SubPrivate Sub Form_Click()Dim a As Integer, b As Integera = 1: b = 1Call ff(a, b)Print a; bEnd Sub例题例题例题例题 :在一维数组中找最大值和其所在的下标:在一维数
25、组中找最大值和其所在的下标:在一维数组中找最大值和其所在的下标:在一维数组中找最大值和其所在的下标 Private Sub find(Private Sub find(a() As Single, n As Integer, a() As Single, n As Integer, _) ) Dim I as integer Dim I as integer max = a(1) max = a(1) : m=1 : m=1 for i=2 to nfor i=2 to n If a(n) max Then max = a(n) If a(n) max Then max = a(n) : m=
26、n : m=n next i next iEnd SubEnd SubPrivate Sub Form_Click()Private Sub Form_Click() Dim b(6) As Single, x As Single, y As Dim b(6) As Single, x As Single, y As integer, i%integer, i% For i = 1 To 6 For i = 1 To 6 b(i) = InputBox(b( + Str(i) + )=, ) b(i) = InputBox(b( + Str(i) + )=, ) Next i Next i_P
27、rint x, yPrint x, y End sub End sub 过程过程过程过程clozecloze用以求用以求用以求用以求1100011000中的所有完数。所谓完数是指一中的所有完数。所谓完数是指一中的所有完数。所谓完数是指一中的所有完数。所谓完数是指一个数的所有因子之和等于其自身。个数的所有因子之和等于其自身。个数的所有因子之和等于其自身。个数的所有因子之和等于其自身。Option ExplicitOption ExplicitDim a(50) As Integer Dim a(50) As Integer 存放每个数分解出来的因子存放每个数分解出来的因子存放每个数分解出来的因子
28、存放每个数分解出来的因子Public Sub cloze()Public Sub cloze() Dim i As Integer, j As Integer Dim i As Integer, j As Integer Dim n As Integer Dim n As Integer 因子个数因子个数因子个数因子个数 Dim s As Integer Dim s As Integer 因子和因子和因子和因子和 For i = 1 To 1000For i = 1 To 1000 n = 0 n = 0 s = 0 s = 0 factor -1- factor -1- For j = 1
29、To n For j = 1 To n s = s + a(j) s = s + a(j) Next j Next j -2- -2- Form1.Print i Form1.Print i End If End If Next i Next iEnd SubEnd SubPublic Sub Public Sub factor(ByValfactor(ByVal x As Integer, x As Integer, ByRefByRef k As Integer) k As Integer) Dim i As Integer Dim i As Integer a(1) = 1 a(1) =
30、 1 k = 1 k = 1 -3- -3- If x Mod i = 0 Then If x Mod i = 0 Then k = k + 1 k = k + 1 -4- -4- End If End If Next i Next iEnd Sub End Sub 2008春试题春试题6Private Sub f(b() As Integer, ByRef m As Integer) Dim i As Integer, j As Integer, k As Integer i = 1 Do While i = m For j = 1 To m If b(i) Mod b(j) = 0 And
31、 i j Then For k = i To m - 1: b(k) = b(k + 1): Next k Exit For End If Next j If j m Then i = i + 1 Else m = m - 1 LoopEnd SubPrivate Sub Command1_Click() Dim a(6) As Integer, i As Integer, n As Integer n = 6 For i = 1 To 6: a(i) = InputBox(a( & i & )=): Next i Call f(a, n) For i = 1 To n: Print a(i)
32、; : Next iEnd Sub数组元素作为函数参数数组元素作为函数参数l l以数组元素为参数的函数过程,地址或值传递以数组元素为参数的函数过程,地址或值传递以数组元素为参数的函数过程,地址或值传递以数组元素为参数的函数过程,地址或值传递形参用简单变量的形式形参用简单变量的形式形参用简单变量的形式形参用简单变量的形式Private Sub form_click()Private Sub form_click()Dim b(6) As SingleDim b(6) As SingleFor i = 1 To 6For i = 1 To 6 b(i) = b(i) = InputBox(bInp
33、utBox(b( & i & )=)( & i & )=)Next iNext iCall swapCall swap(b(1),b(6)(b(1),b(6)For i = 1 To 6For i = 1 To 6 Print b(i) Print b(i)Next iNext iEnd SubEnd SubSub swap(m as integer,n as integer) temp=m : m=n : n=tempEnd subbyvalbyval主题六:变量作用域主题六:变量作用域多模块程序设计多模块程序设计多模块程序设计多模块程序设计工程文件工程文件工程文件工程文件(. (.vbpv
34、bp) )由三种类型的模块由三种类型的模块由三种类型的模块由三种类型的模块:l l窗体模块窗体模块窗体模块窗体模块(frmfrm):):):):包含窗体中各个对象的事件过程,控包含窗体中各个对象的事件过程,控包含窗体中各个对象的事件过程,控包含窗体中各个对象的事件过程,控件属性信息。件属性信息。件属性信息。件属性信息。声明部分通用过程事件过程l l标准模块标准模块标准模块标准模块(*.bas):(*.bas):存放通用过程。存放通用过程。存放通用过程。存放通用过程。声明部分通用过程l l类模块类模块类模块类模块(*.(*.clscls) )跨模块调用跨模块调用跨模块调用跨模块调用l l用用用用
35、privateprivate修饰的通用过程,只能被本模块中调用。修饰的通用过程,只能被本模块中调用。修饰的通用过程,只能被本模块中调用。修饰的通用过程,只能被本模块中调用。l l在标准模块中用在标准模块中用在标准模块中用在标准模块中用publicpublic修饰的通用过程,可以被工程中所有修饰的通用过程,可以被工程中所有修饰的通用过程,可以被工程中所有修饰的通用过程,可以被工程中所有模块调用。模块调用。模块调用。模块调用。l l在窗体模块中用在窗体模块中用在窗体模块中用在窗体模块中用publicpublic修饰的通用过程,必须标明窗体名称修饰的通用过程,必须标明窗体名称修饰的通用过程,必须标明
36、窗体名称修饰的通用过程,必须标明窗体名称才可以被工程中所有其他模块调用,如才可以被工程中所有其他模块调用,如才可以被工程中所有其他模块调用,如才可以被工程中所有其他模块调用,如call form1.xyz( )call form1.xyz( )变量的作用域变量的作用域局部变量局部变量局部变量局部变量l l在在在在事件、函数或事件、函数或事件、函数或事件、函数或subsub过程内部过程内部过程内部过程内部用用用用 Dim Dim 语句定义的变量,语句定义的变量,语句定义的变量,语句定义的变量,所有形参所有形参所有形参所有形参l l作用域是变量所在的过程作用域是变量所在的过程作用域是变量所在的过程
37、作用域是变量所在的过程l l不同过程可定义同名的局部变量,若变量没有声明,不同过程可定义同名的局部变量,若变量没有声明,不同过程可定义同名的局部变量,若变量没有声明,不同过程可定义同名的局部变量,若变量没有声明,也是局部变量也是局部变量也是局部变量也是局部变量模块级变量模块级变量模块级变量模块级变量l l在在在在窗体模块的通用对象声明部分,窗体模块的通用对象声明部分,窗体模块的通用对象声明部分,窗体模块的通用对象声明部分,用用用用 Dim Dim 或或或或 PrivatePrivate 定义的变量(包括数组)定义的变量(包括数组)定义的变量(包括数组)定义的变量(包括数组)l l作用域是整个模
38、块作用域是整个模块作用域是整个模块作用域是整个模块全局变量全局变量全局变量全局变量l l在在在在窗体模块或标准模块窗体模块或标准模块窗体模块或标准模块窗体模块或标准模块的通用对象声明部分,用的通用对象声明部分,用的通用对象声明部分,用的通用对象声明部分,用 Public Public 定义的变量定义的变量定义的变量定义的变量l l作用域是整个工程作用域是整个工程作用域是整个工程作用域是整个工程 ,引用方法是:,引用方法是:,引用方法是:,引用方法是:x=form2.kx=form2.kl l数组、定长字符串不可以用数组、定长字符串不可以用数组、定长字符串不可以用数组、定长字符串不可以用publ
39、ic public 声明声明声明声明写出四次单击命令按钮写出四次单击命令按钮写出四次单击命令按钮写出四次单击命令按钮Command1Command1后窗体上的输出结后窗体上的输出结后窗体上的输出结后窗体上的输出结果。果。果。果。Dim x As Integer, y As IntegerDim x As Integer, y As IntegerPrivate Sub f1()Private Sub f1()x = x / 2x = x / 2End SubEnd SubPrivate Sub f2()Private Sub f2()y = y / 2y = y / 2End SubEnd S
40、ubPrivate Sub Command1_Click( )Private Sub Command1_Click( )Call f1Call f1Call f2Call f2Print x, y Print x, y End SubEnd SubPrivate Sub Form_Load( )Private Sub Form_Load( )x = 64 : y =64x = 64 : y =64End SubEnd Sub写出四次单击命令按钮写出四次单击命令按钮写出四次单击命令按钮写出四次单击命令按钮Command1Command1后窗体上的输出结果。后窗体上的输出结果。后窗体上的输出结果。
41、后窗体上的输出结果。Dim x As Integer, y As Integer Dim x As Integer, y As Integer Private Sub f1() Private Sub f1() x = x / 2x = x / 2End SubEnd SubPrivate Sub f2()Private Sub f2()Dim y as integerDim y as integery = y / 2y = y / 2End SubEnd SubPrivate Sub Command1_Click( )Private Sub Command1_Click( )Call f1C
42、all f1Call f2Call f2Print x, y Print x, y End SubEnd SubPrivate Sub Form_Load( )Private Sub Form_Load( )x = 64 : y =64x = 64 : y =64End SubEnd SubDim x As Integer, y As IntegerDim x As Integer, y As IntegerPrivate Sub f1(a As Integer)Private Sub f1(a As Integer)a = a / 2a = a / 2End SubEnd SubPrivat
43、e Sub f2(ByVal b As Integer)Private Sub f2(ByVal b As Integer)b = b / 2b = b / 2End SubEnd SubPrivate Sub Command1_Click( )Private Sub Command1_Click( )Call f1(x)Call f1(x)Call f2(y)Call f2(y)Print x, y Print x, y End SubEnd SubPrivate Sub Form_Load( )Private Sub Form_Load( )x = 64 : y =64x = 64 : y
44、 =64End SubEnd Sub写出四次单击命令按钮写出四次单击命令按钮写出四次单击命令按钮写出四次单击命令按钮Command1Command1后窗体上的后窗体上的后窗体上的后窗体上的输出结果。输出结果。输出结果。输出结果。从变量的作用时间来说,局部变量有动态变量和静态变量从变量的作用时间来说,局部变量有动态变量和静态变量从变量的作用时间来说,局部变量有动态变量和静态变量从变量的作用时间来说,局部变量有动态变量和静态变量两种。两种。两种。两种。动态变量动态变量动态变量动态变量l l变量所在过程运行时,才给变量分配内存,过程运行变量所在过程运行时,才给变量分配内存,过程运行变量所在过程运行时
45、,才给变量分配内存,过程运行变量所在过程运行时,才给变量分配内存,过程运行结束后自动释放内存,其值消失结束后自动释放内存,其值消失结束后自动释放内存,其值消失结束后自动释放内存,其值消失l l每次执行过程时,变量都重新声明每次执行过程时,变量都重新声明每次执行过程时,变量都重新声明每次执行过程时,变量都重新声明l l在过程中用在过程中用在过程中用在过程中用 Dim Dim 语句语句语句语句声明的局部变量是动态变量声明的局部变量是动态变量声明的局部变量是动态变量声明的局部变量是动态变量 静态变量静态变量静态变量静态变量l l程序运行期间一直存在,变量的值被保留下来程序运行期间一直存在,变量的值被
46、保留下来程序运行期间一直存在,变量的值被保留下来程序运行期间一直存在,变量的值被保留下来 l l每次执行过程时,不会对变量重新声明每次执行过程时,不会对变量重新声明每次执行过程时,不会对变量重新声明每次执行过程时,不会对变量重新声明定义方法定义方法定义方法定义方法StaticStatic 变量名变量名变量名变量名 As As 数据类型数据类型数据类型数据类型(在过程内)(在过程内)(在过程内)(在过程内)Static Static Sub Sub 过程名过程名过程名过程名( ) ( ) (在过程头部)(在过程头部)(在过程头部)(在过程头部)主题七:变量的生存期主题七:变量的生存期例:窗体每单击一次,背景色在红色例:窗体每单击一次,背景色在红色和蓝色间变换和蓝色间变换(用静态变量或(用静态变量或 模块级变量)模块级变量)