
2023年vb知识点总结.pdf
41页V B 概述§ 1VB的特点1 .可视化的设计平台2 . 面向对象的设计方法对象具有自己的属性( 对象的性质) 、方 法 ( 对象的动作)和事件( 对象的响应) ,它构成对象的三个要素3 .事件驱动的编程机制4 . 集成化的开发环境5 . 结构化的设计语言§4 V B 程序设计V B 应用程序的开发有三个环节:( 1)设计应用程序界面 2)设立对象的属性( 3 ) 编写事件驱动代码保存工程简便方法:执 行 “ 文献/ 保存工程”命令( 第一次保存文献)系统先打开“ 文献另存为”对话框,保存窗体文献( 或标准模块文献),然后再打开“ 工程另存为”对话框,保存工程文献保存修改后的工程文献选 择 “ 文献/ 保存工程”命令保存所做的修改,( 保存与工程有关的修改过的窗体文献或标准模块文献)VB基础知识常量( 1 )字符串常量用双引号括起来的字符序列( 除双引号和回车符) 例如:"China"''I am a s t u d e n t ."" 9 5.3%"" 计算机软件"( 2)数值常量整 型 1 2 3 4 ( 十进制)长 整 型 1 2 3 4 5 67 8 ( 十进制)单精度数: 有三种形式, 1 2 . 3 4 , 1 2 3 ! , 1 2 3 . 4 5 E -5双精度数: 有两种形式,1 2 . 3 4 # , 1 2 3 . 4 5 D -5在常数后面加上类型说明符:%整 型 &长 整 型 !单精度#双 精 度 $字符串型。
2 .符号常量格式:C o n s t 常量名=表达式功能:定义一个符号常量来表达表达式的值说明:“ 常量名”可加以类型说明符符号常量的类型由类型说明符或表达式的类型决定C o n s t P I = 3 . 1 4 1 5 9 3变量1 . 变量的命名变量名以字母开头,后跟字母、数字和下划线组成说明:( 1 )变量名不能是保存字( 2 ) V B 变量名不区分字母大小写2 .变量的类型( 1)用类型说明符在变量的尾部加上类型说明符:% 整 型 &长 整 型 !单精度#双 精 度 $字符串型例如:N um % , S trl$均是合法的变量名在引用时, 可以省略类型说明符 2)定义变量时声明其类型格式:Dim变量名 A s类型“ 类型”可为基本数据类型或用户自定义的类型Boo 1 e a n( 布尔型)Lon g ( 长整型)S i ng 1 e( 单精度型)Doub 1 e( 双精度型)Stri ng ( 字符串型) Va r i ant ( 变体型)用户自定义类型例如:D i m s tri As St r i ng, coun t ry As St r ing* 2 0Dim i As I nt e g e r z s um As S i n g Ie定义变量后, 数值型变量的初值为0字符型变量的初值为空字符串其中:变长字符串的初值是长度为0定长字符串的初值的长度等于定义值。
3 .变体类型变量如未定义类型的变量例如:D i m sum As Vari a ntD im s um运算符与表达式1 .算术运算符( 8 种)优先级( 从高到低):指 数 ( A)取负( ―)乘法、浮点除法( * , / )整数除法( \ )取模( Mo d )加法、减 法 ( + , 一) 整除:被除数和除数为整数, 结果为整数3 1 . 7 \ 5 . 8 83 2 \ 6 结果为:5取 模 ( 求余)运算: 结果为整数除法的余数3 1 . 7 7 Mo d 5 . 8 8 ( 四舍五入)3 2 M o d 6, 余数为23 Mo d 6余数为3字符串表达式字符串运算符: & 或 +功能: 把字符串连接成一个字符串说明:( 1 )符号与字符串变量之间应间隔一个空格,例如:s t r 1 & s tr2( 2 ) 能强制把其它类型的数据转换为字符串,而 “ + ”不能例如:2023 & " 奥运会" 2023奥运会"2 023" + " 奥运会" 202 3 奥运会注意:Pr i n t "1 2 3 " + 567 结果:690Pr i n t "abc" + 5 67 犯错:类型不匹配常用内部函数数学函数函 数功 能Abs (x)返回X的绝对值I n t (x)求不大于X的最大整数I n t(7. 8)结果为 7, Int ( - 7 . 8 ) 结果为- 8C in t(x )把 X小数四舍五入,转换为整数,Exp (x)计算e * e 是自然数2. 7 1 8 2 81Lo g (x)求 X的自然对数s qr (x)求 X的平方根Rnd返回0~1之间的随机数:字符串函数说明:Len (str)返回字符串长度Left$(s t r , n)取字符串左边n 个字符R i ght$( s tr, n)取字符串右边n个字符M i d$(str, p [, n])从位置p 开始,取 n个字符,如 n 省略, 取到最后St r $ (n u m)数值转字符串V a l(str)字符串转数值A s c ( s t r )返回字符串首字母A S C II码Chr$(n)ASC I I 码转字符⑴三角函数Sin、Cos和T a n 自变量的单位是弧度反正切函数At n ( x ) 的返回值单位为弧度。
度转换为弧度:1° = 3.141 59/ 180 *x(2 )用函数Rnd可以产生不同的随机数产生指定范围的随机数:•产 生 0~n之间的随机数( 不含和 n)Rnd*n•产 生0 ~n之间的随机整数( 含0 ,不含n)In t (R nd*n)•产 生 a〜 b 之间的随机整数( 含a , 不含b)Int ( (b—a) *Rnd+a)•产 生a 〜 b之间的随机整数( 含a 和b )I n t ( (b—a+ 1 ) *Rnd+a)顺序结构结构化程序三种基本结构:顺序结构、选择结构和循环结构1 赋值语句变 量 = 表达式属性名=属性值注意:当变量类型与表达式的类型不同时,VB自动将表达式的类型强制转换为变量类型例如:Dim Num As I ntegerNum=8.89 (将 9 赋给N u m ,四舍五人)3 数据输入方法工:用文本框例: Dim m As Intege rm = Va 1 (T e xt 1 . Text)方法2:用 Inpu t box()函数例: m = Val(In p utBo x ("ent e r m : " ) )方法3 : 从文献输入I n put# 2 , m4 输出数据方法1 :用文本框例: T e xtl.T e xt=n或 T e x t 1= n方法2:用标签例: La b e ll. C a p t ion = n方法3 : 用Prin t 方法例: Print n方法4 : 输出到列表框例: ListLAd di t em n方法5 : 输出到文献例:Open "a b c .da t " For Output As #1W rite # lz n【 例】互换变量a 、b的值。
用中间变量t 作暂存单元,必须与互换的变量同类型t = a : a = b : b = t3. 2 窗体窗体常用的方法P r i n t ,窗体事件1. C 1 ick 事件2. Load WLoad是把窗体装入工作区事件,Frm_Load()事件是执行程序时自动触发的, 因此常用来在启动程序时对属性和变量进行初始化3 . Un Load 事件关闭窗体触发该事件偿好储构满 足 条 件 为 “ 真 " ,用“ T r u e ”表达;不满足条件为“ 假 ”,用" F a l s e ”表达关系表达式1 .关 系 运 算 符(6种)= 、<>、< 、> 、< = 、 >=优先级相同, 运算从左到右2 .关系表达式例如:" a ppl y " > “ a ppl e "按AS CI I码逐字符进行比较空格< “ 0 ” … “ 9” < "A ” … " Z ” < " a " … " z”"app 1 y" > "apple”结果为 True逻辑表达式逻辑运算符:Not、And、 O r优先级:逻 辑 非(No t )、逻 辑 与(And)、逻 辑 或(Or )注意:表达:a《x〈ba < = x A nd x < = b选择结构1. 单 行I f语句I f条 件Then语 句 组1 [E 1 se语 句 组2 ]语句组: 各 语 句 间 需 用 ”分隔。
2 . 块结构If语句I f 条 件T h e n语句块1Else语句块2End If例: 计算分段函数1+x (xNO)y=l-2x (x<0)Ifx>= 0 Theny= 1 + xE 1 sey=l-2*xEnd I f用单行If语句:I f x>=0 Then y=l+x El s e y=l-2*x或:If x>= 0 Then y =l+xI f x<0 Th e n y=l-2*x3 .多分支选择结构I f 条件[Then语句块1EI s elf 条件 2 Then语句块2Else If 条件 3 Then语句块3El s e语句块n+1End If从多个条件中,选择执行一个语句块“ 纵然分支众多, 仅选其一”说明:当有多个条件为真时,只能执行最前面的一个语句块注意:E 1 s e lf之间不能有空格【 例】学生成绩鉴定Pr i vate Su b C o mmandl_C 1 i ck()x =Va 1 (InputBox (" 输入学生成绩: " ) )If x >=90 ThenPrint “ 优”EI s e I f x >=8 0 T henPr i nt “ 良”Elself x >=7 0 ThenP r i n t “ 中”Elsel f x >60 ThenPrint “ 及格”ElsePrint “ 不及格”End I fEnd Sub4. 2.4 I lf 函数I If是单行I f 语句的简朴版本。
变 量 = Ilf (条件,True部分,Fa 1 se部分)注意:I I f 函数中的三个参数都不能省略例:计算分段函数1 +x ( x 20)y=1 -2 x (x<0)Privat e Sub C o mman d 1_C 1 ick()D i m x A s Sing 1 e,y As Sin g Iex= Vai (Textl.Text)y=IIf( x >=0,l+x, 1 — 2* x )Text2. T e x t = yEnd Sub【 例】判闰年闰年的条件:(1 )被4整除, 但不能被100整除;(2 )能被400整除最佳:Ifx Mod 4 00 = 0Theny$ = " 是闰年"Elself x Mo d 4 = 0 And x Mod 1 00 <> 0 Theny$ = " 是闰年"E 1 sey$ = " 不是闰年"End If也可x = Vai (InputBox ( " 输入年份" ) )If x Mod 4 = 0 and x Mod 10 0 <> 0 or x Mo d 4 0 0 =0 Theny$ = " 是闰年"Elsey $ =" 不是闰年"End I f4 ,Se 1 ect Case 语句用于实现多分支结构。
Se 1 e ct C a se测试表达式C a s e 条件1语句块1Case条件2语句块2Ca s e Else语句块n+1End Selec t功能:从多个条件中选择执行第一个符合条件的语句, 都不符合,则执行Case Else后的语句块注意条件:常量表:1, 3, 5测试范围:10 to20, ''a"to''z"比较范围:Is < 10(不能为逻辑表达式)【 例 】学生成绩评估Private S ub Comman d l_Cli c k ()X = Val(InputBox("输入考试成绩” ))S e lec t Case xCase 9 0 T o 100y$ =" 优”Case 80 To 8 9y$ = "良"Ca s e 70 To 79y$ = "中"Ca s e 6 0 To 69y$ =" 及格"Case 0 T o 59y$ =" 不及格"C a se El s ey$ =" 输入错误"End SelectForml. Print " 成绩: " ;x," 等级: " ;y$E nd Sub篇环信构“ 当型”循环:当条件为真,执行循环体 直到型”循环: 做循环,直到条件为真为止。
1. For-Next 循环常用于循环次数已知For循环变量 = 初值T o 终 值 [Step步长]循环体[ Exit F o r ]Next循环变量【 例】计算n !P riva t e Sub Commandl_ Click()n = Va 1 (InputBox(" 输入一个自然数” ))Term = 1For i = 1 To nTe r m = Term * iN e x t iPrint n; "! ="; T e rmEn d Sub【 例】计算2 +4 + 6 + ...... + 100的值Private Sub Commandl_Click()Sum = 0For x = 2 To 1 00 St e p 2S u m = Sum + xN e xt xFo r m 1 .Print "S u m="; SumEnd Sub【 例】计算1 + 2 ! 4- 3 ! + ……+ 10!Private Sub Commandl_C 1 i c k()T = 1S = 0Fork = 1 To 1 0T = T * kS = S + TNext kPrint SEnd Sub2 . While Tend 循环适合解决循环次数未知的循环。
While条件语句块W e nd功能:当条件为真时执行循环 例】计算1+2+3 + ..... +10 0P riv a te Sub Commandl_Click()Dim n A sin te g e r ^ s A ss =0n =1Whi 1 e n<= 1 00s = s + nn = n +1WendLab 1 e l.Capti o n= "1 + 2 ++3+Int e ger+100="&End Sub3. Do-Loop 循环D o语句块[Exit Do]Loop [Wh i I e | Un t il 条件]Do [Whil e |Unt i I 条件]语句块[ E x it Do ]Loo p功能:W h ile 条件一一当“ 条件”为 T ru e 执行循环体Unt i 1条件一一 “ 条件”为 False执行循环体如无条件,则为死循环说明:格式1 : “ 先循环,后判断”, 至少执行一次循环格式2 : “ 先判断,后循环”, 如条件不满足,则一次循环也不执行 例】计算1+2+3+.......+100s=0n =1Do while n< = 100s= s +nn=n+lL oop也可s=0n =1D o U n t i 1 n >100s=s+nn=n+lLoop【 例】将十进制数转换为二进制数Private Sub Form_ Cli c k ()Dim m A s In t eg e rm = I nputBox("en t er m:")a$ = ""While m <> 0r = m Mo d 2a$ = r & a $m = m \ 2WendPri nt a$End Sub注意:a $ = a $ & r贝 !J 为:4=001列表框列表框的方法Additem方法:用于在列表框中插入一个列表项。
格式:列表框.A d d ite m 项目字符串[ , 索引值]如省略索引值,则在列表框的最后插入新列表项【 例】将文本框内容添加到列表框1Priv a te S u b Command 1 _CI i ck()Li s tl.Addltem T e x t 1 .TextEnd S u b多重循环说明:(1 )必须完整嵌套,不得交叉 2 ) Exit For语句和Exit Do语句只能退出当前层循环指定每行显示数据的个数For n= l t o 30Print n ;"If n Mod 1 0 = 0 Then Pr i ntNext n, 每显示10个数据换行常用算法( 1 )1.不定方程求解 例】百鸡问题x + y +z=10 05 x + 3 y+ z / 3 =10 0Priv a t e S u b Comm a ndl_Click()D i m x A s In t e ge rDim y As Integer, z As In t egerPrin t "公鸡", " 母 鸡 "小鸡"For x = 0 To 20F or y = 0 To 3 3z = 100 - x - yIf 5 * x + 3 * y + z/ 3 = 10 0 ThenP r int x,y, zE nd IfN e xt yNex t xdEnd S ub2 .求最大公约数和最小公倍数辗转相除法:【 例】计算最大公约数和最小公倍数。
P r i v at e Sub Comm a ndl_ Click()Dim m A s Integ er, n As I nt e ge rDim u As Inte g e r , v As In t ege rm = V a 1 (Te x t 1 .Text)n = Val(Text2 .Text)If m > n The nu = m: v = nE Is eu = n : v = mEnd IfDor = u M o d vu = vv = rLoop U nt i I r = 0Print "最大公约数: "; uPrint ” 最小公倍数: ";m * n / uE nd Su b或r = u Mo d vDo Whi 1 e r<>0u = vv = rr = u M o d vLoo pPrint”最 大 公 约 数 :v3. 判素数( 质数)【 例】判n是否为素数Private Sub Command 1 _Click()Dim n A s In t eger, i As I ntegern = Va l(InputBox("输入正整数"))F o r i = 2 To n - 1If n Mo d i = 0 Th e n Exit ForNext iIf i > n — 1 ThenPr i nt n ;" 是质数”E IseP rin t* " 不是质数"End IfEnd Sub例 求100〜 200之间素数,并写入顺序文献。
Priv a te Su b Comma n d 1_C 1 ic k ( )O p en ''shusu . d a t" For O u tput A s #1F o r n= 10 1 To 200 ste p 2S= 1, 是For i = 2 T o I nt(Sq r (n))If n Mo d i = 0 The nS= 0 ' 不是Exi t Fo rEnd IfN ext IIf s = l The n Wri t e# 1 , nN e x t nc 1 o se #1End S u b添加到列表框:Lis t 1. A d dltem n6 . 1静态数组编译时分派存储空间定义:Di m b ( 3 , 4 )As L ong分派4 X 5个长整型变量的空间,二维数组在内存按行的顺序存放例: D i m b (3, 2 to 4 , 1 to 3 ) As Int e g erb ( 0 , 0 )b ( 0 , 1 )B( 0 , 2 )b ( 0 , 3 )b ( 0 ,b ( 1 , 0 )b ( 1 , 1 )B ( 1 , 2 )b ( 1 , 3 )b ( 1 ,b ( 2 , 0 )b ( 2 , 1 )B( 2 , 2 )b ( 2 , 3 )b ( 2 , 4b ( 3 , 0 )b ( 3 , 1 )B( 3 , 2 )b ( 3 , 3 )b ( 3 「共 分 派4 X 3 X 3 = 3 6个元素,共7 2 ByteO p t i o n语句格式:O pti on Ba se 1注意:只能出现在窗体层或模块层必须位于数组定义之前。
例:Option B a s e lDi m a ( l 0 ) As I nt e g e r, x( 5 , 5 ) As S t ri ng每一维下标的下界均从1 开始动态数组运营时分派内存区,定义分两步进行:( 1 ) 先在窗体层、标准模块或过程中Dim或 Pub 1 i c 声明一个没有下标的数组 2 ) 过程中用ReDim语句定义带下标的数组说明:声明时不指定数组的维数数组的维数由第一次出现的ReDim语句指定例如:Dim Test() As I nt e gerDim n A s In t egerS ub F o r m _ c li c k ( )n=In p utBox(w En t e r a va lue :")R e D i m T e s t ( n)End Sub数组元素的引用形式:数组名( 下标)数组元素赋初值运营前对数组进行初始化格式: 数组变量名=Array(初 值 表 )说明: 数组下标下界缺省为0 ,只能对一维数组初始化【 例】Dim a As As Varianta=Array(1, 2 , 3, 4, 5 , 6, 7 )注意:下标从0~6【 例】一维数组元素赋初值。
O p tion Bas e 1Priva t e S ub Form_ Clic k ()Dim a A s Varia nta = Array2, 3, 4,5, 6, 7)For i = 1 To 7P r int a(i);Nex t iEnd Sub运营结果:1 2 3 4 5 6 7数组输入/ 输出一般通过For循环语句和I n p u t Box函数实现,一维数组用单重循环二维数组采用双重循环 例】一维数组的输入和输出For i = 1 To 10a(i) = In p utBox ("Enter data:")Next i【 例】二维数组的输入和输出1 2 34 5 67 8 9For i = IT o 3For j = 1 To 3a(i, j) = I nputBox ( " ent e r d a ta :* )Next jNext iFor i = 1 To 3For j = 1 To 3Print a ( i , j );" ";Next jPrin tN e x t i【 例】用R nd产生10个 〜1 0 0之间随机数Fo r i = 1 T o 1 0a(i) = I nt(10O * Rnd)N e xt i用户自定义类型定义格式:Type自定义类型名元素名1 A s类型名元素名2 A s类型名元素名n A s类型名End T y p e其中:类型名一一可为任何基本类型,也可为用户自定义类型。
说明:(1) 一般在标准模块中定义, 默认为Pu bliCo如在窗体模块的“ 声明”段定义,则必须加上p r ivate,且只能在窗体模块中使用 2 )自定义类型中的元素可认为数组名 例】Pr i v a t e Type studentn u m As Strin g * 8name As Strin g * 8total As Integeraverag e A s In t egerEnd Typei .自定义类型变量的声明D im变 量 名A s自定义类型名例如:Dim stud As Studen t2 .引用自定义类型变量中的元素形式: 变量名. 元素名3. 自定义类型数组的声明和使用声明:Di m st( 5 ) As S t ud e nt引用形式:记录数组元素. 成员名【 例】输入5个学生的学号、姓名、和3门课的成绩, 运用自定义类型数组,计算每个学生的总分和平均分, 并按平均成绩从高到低输出学生的成绩单Privat e T y pe st u d e ntno As St r in g * 6n a me As St r i ng * 6si As S i ngles 2 As S i n g Ies 3 As Si n g 1 et o tai As Sin g I eaver As Sing 1 eEnd T y pePri v ate Su b F orm_CI i ck()D i m a(l To 5) A s student, t A s s tudentO pen ''s t ud.d a t" F o r Ou t pu t A s #1' O pe n "stud . d a t" F or R a n d o t n As #2 L e n= L e n ( t) 打开随机文献n = 5For i = 1 To na (i).to t a 1 =a( i ). sl+ a (i),s 2 + a (i). s 3a(i) .av e r = a (i) . t ot a I / 3Nex t iFor i = 1 To n - 1Fo r j = i + 1 To nIf a(i) . a ver < a(j). a v er Thent = a(i)a(i) = a ( j )a ( j ) = tEnd I fNex t jNext iP ri nt ”学 号 姓 名 语 文 数 学 英 语 总 分 平 均 分 "For i = 1 T o nPrint Ta b (2); a(i) .no; Tab( 1 0); a (i).name; T a b ( 18) ; a ( i) .s l;"Print a (i).s 2 ; " a ( i ), s 3 ; " "; a(i). t o t a l ;" " ;a( i ).averWr i t e#l, a ( i ). no, a (i). n a meza(i). s 1, a(i).s2, a(i). s3 , a( i ).t o t al, (i).aver'P ut#2 , i , a ( i )写入随机文献N e x t iClos e# 1End Sub注意:写入文献一行一个记录运 营 结 果说 明 :互换两个记录数组元素的值, 则该记录数组元素的所有成员都将互换。
6. 7常用算法( 2 )1 .求最大值和最小值【 例】找10个数中的最大值与最小值Fo r i = 1 T o 10I f a( i ) > Max Then M a x = a (i)I f a(i) < M i n T hen Mi n = a(i)Next i6. 7. 2排序升序:从小到大降序:从大到小1 .比较互换法For i = 1 To n - 1For j = i + 1 To nIf a ( i ) > a( j ) The nt = a(i)a ( i ) = a(j)a (j) = tEnd IfN e xt jNe x t i2 .选择法排序For i = 1 To n - 1P = iFo r j = i + 1 To nIf a(p) > a (j ) Then p = jNext jt = a(i)a(i) = a(p)a (P) = tNext i3. 冒泡法排序特点:相邻的两个元素进行比较For i = 1 To n — 1F o r j = 1 To n - iI f a (j) > a(j + 1) T h e nt = a (j)a (j) = a ( j 4- 1 )a(j + 1) = tEnd IfNex t jNe x t i查询L顺序查询从一组数据中,按顺序地查找指定的数据。
例】用顺序查询法在下列数据中查找关键字值k = Vai (InputBox ( "输入要查询的数” ))P = 1Wh i Ie k <> a (p) And p < nP = P + 1WendIf k = a(p) Th e nPrint k; "be f o u n d,o n p; " t h p osi t ion."El s ePrint k; "has not be fo u n d ."End If2折半查询折半查找也称为二分法查询只能对有序数列进行查询 例】用折半查询法查找关键字值66 1 2 3 , - 1 0 , 5 , 8, 3 0 , 5 6, 5 9, 66, 90 , 5 1 80 pt i o n Base 1Pri v a t e Sub Form_C 1 i c k()Dim a As Va r ianta = Array(-12 3z -10z 5, 8, 30, 56, 5 9 , 6 6 , 9 0,5 18)n = UBound(a)P ri nt ” 数组a中的1 0个数为: "Fo r Each ii In aPrint ii;"N e xt iiP r intk = V a l( InputBox( "输入要查询的数"))Pr in t ” 要查询的数是:";kI O W = 1h i g = nf i n d = - 1Whil e 1 ow < = higA nd f ind = —1m = (low + h i g ) \ 2If k = a (m) Thenfi n d = 1P r i n t k; "has be found,on"; m; "th pos i tion."ElseI f k < a(m) Thenh ig = m - 1Elselow = m + 1End IfEnd I fWe n dIf find = -1 ThenP r int k; "ha s n o t b e f o u nd."End IfE nd Sub注意:若数据按降序排列I f k < a (m) Thenlow = m + 1El s eh i g = m - 1End If【 例】输出前5名名次、运动员号和成绩,并将结果写入顺序文献。
P rivate Sub Form_Click()O p en ''s t ud.da t " For Output As #1D i m no(l To 16) As St r i n gDim a ( 1 To 16) As SingleFor i = 1 T o 16n o ( i ) = I n p u tBox( " 输入运动员编号: ")a ( i ) = V a l( Inpu t Box( "输入运动员成绩: " ) )Nex t iFor i = 1 To 1 5k = iFor j = i + 1 T o 16I f a( k ) > a (j) T hen k = jN e x t jt = n o(i)no (i) = no( k )no(k) = tt = a(i)a (i) = a(k)a (k) = tEnd IfNext iP ri nt " 名 次 运 动 员 编 号 运 动 员 成 绩 ”For i = 1 To 5Print iz n o (i), a (i)Wri t e # lzi,n o (i) ra(i)Next iEnd Sub过 程函数过程的定义F unc t i on函数过程名( 形参表)[ A s类型]函数过程名=表达式End Functio n说明:函数过程名有值,有类型,在过程体必须被赋值调用形式:函数过程名( 实参表)子程序过程定义Su b子程序过程名( 形参表)End Sub说明:子程序过程名无值, 无类型调用形式:C a l l子程序过程名( 实参表)【 例】函数过程使用编写函数过程计算n!P riv a te Sub Comma n d l_ C lick()n = Val(Text 1 .Tex t )Text2. Tex t = f act( n )End SubFuncti o n fact( n )1For i1 To nf = f * iNext ifact = fEn d Fu nction【 例】子程序过程计算n!P r i v at e Sub C o mm and l_Click()n = V a l(Textl.Text)C a I I fact(nz f)Te x t 2.Text = fEnd Su bP r ivate Sub f a c t(n, f)f = 1F o r i = 2 To nf = f * iNe x t iEnd Sub说明:由若干变元计算一个值用F u notion过程计算若干值, 只能用Sub过程。
7 . 3参数传送1传值方式将实参的值传给形参,数据传送方向为单向,形参的改变对实参无影响实参:常量、( 变量)、或表达式形参:变量或 实 参: 变量形参前加关键字ByV a 1例:S ub f a c t( ByV a l n)2传址方式将实参的地址传给形参,使实参和形参共用同一存储单元数据传送方向为双向,形参的改变对实参有影响实参:变量、数组名( )形参:变量、数组名( )或 形 参 前 加ByR e f例:S ub f a c t ( ByR e f n)V B默认方式为传址方式说明:从过程中, 返回计算结果,必须采用传址方式P riv a t e Sub Fo r m_Click()n = 100m = 200C a ll a b c (n, m)Print n, mEn d SubPu blic Su b a b c (ByVai x , y)t = xx = yy = tP r int x, yEnd S ub输出: 2 0 0 1 0 01 0 0 1 0 0变量的作用域作用域指变量能被某一过程辨认的范围1 . 全局变量在标准模块的通用段用P u b lic 声明变量可在工程的所有模块、所有过程中使用作用范围为整个应用程序。
例如:Publi c x As I n t e ger, y As Si n gle2 .模块级变量在窗体或标准模块的通用段用Pri v a t e或Dim声明变量作用域:在声明它的整个模块的所有过程有效例如:P ri v at e x As Integ e r , y As Single或Dim x A s I n t e g er, y A s S ingle3 .局部变量在过程中定义的变量作用域:为其所在的过程随过程的调用而分派存储单元,过程执行结束, 所占用的存储单元被释放静态变量:用S ta tic声明的局部变量,在过程调用结束后保存值 例】动态变量、静态变量和模块级变量的作用域Dim c As IntegerP r i v ate Sub Form_Click()a = 1 ■ b = 2: c = 3Print " a", " b ", " c"For i = 1 To 3Ca 1 1 te s tN e xt iPrint " A", " B", " C"P rin t a, b, cEnd SubSub te s t ()Stat i c aa = a + 1b = b + 1c = c + 1Print a, b, cE nd Sub数据文献1.顺序文献的打开格式: Open “ 文献名" F or < 方式〉A s 文献号》方式:Outp u t 一顺序写入方式I npu t —顺序读出方式,指定的文献必须存在。
A ppen d —顺序添加方式写顺序文献语句( 建立文献)格式:W r i te#文献号, 输出项表功能:将输出项表中的数据写入顺序文献说明:各项之间用逗号分隔【 例】建立一个学生成绩文献pPri v ate Sub F o r m_C lick( )Dim n o As L o ng, nam As St r in gDim s c or e As SingleOpen * d : \ c hen g j i 1 . d at" Fo r Output A s # 2no = I n p u t B o x( " 输入学号: ‘ )While no <> 9 9 9 99n a m = I nputB ox $ ( " 输入学生姓名: ”)sc o r e = I n p ut B o x ( " 输入学生成绩:” )W r i te # 2 , n o, nam, scor eno = I n p u t B ox ( " 输入学号: ” )WendClose #2En d Su b读 顺 序 文 献 语 句( l ) Input# 语 句格式: I nput#文献号, 变量表功 能: 从顺序文献中读数据,赋给变量表中的变量。
说 明 :变 量 表 中 的 变 量 类 型 必 须 与 文 献 中 数 据 项 的 类 型 一 致【 例】将学生成绩文献“ chen gj i 1 . d at”读入内存, 在窗体上显示出来PPrivate S ub F o rm_ C li c k ( )Dim no As Lon g, nam As S t ringDim score A s S ing 1 eOpe n "d:\chengjil.dat" For I nput As #2Pr i n t学号” , " 姓 名 " , " 成绩"While Not Eof (2)In p u t #2, n o, nam , s c o rePr i nt no, nam, sc o reWendC 1 o s e #2End SubLine In p u t#语句格式:Li ne Input#,字符串变量功能:从顺序文献中读取一整行赋给一个字符串变量说明:将以回车符为结束标志的整行当作一个字符串赋给一个字符串变量佑用援件窗体设计称窗体,运营后称窗口P r i n t方法: 在窗体输出数据Show方法:显示窗体C lick事件: 鼠标单击窗体, 调用窗体事件过程F o rm / 1 i ck ()Load事件:执行程序时自动触发U nload事件: 关闭窗体时执行文本框:Text属性——文本框中显示的内容, 默认值为T e x tl、 等。
Te x 1 1 . T e xt =字符串或Textl = 字符串Change事件:改变Text属性时触发G ot Foe u s事件:获得焦点时触发S etF o cus方法: 设立焦点, 将光标移到文本框标签控件:J aption属性一一标签中显示文本, 默认值为L abell、……命令按钮:C aption属性- - - 命令按钮显示的字符E nabled属性- - - 设立命令按钮是否为活动状态( True)C l ick事件:鼠标单击事件,调用命令按钮事件过程C ommandl_C lick( )计时器控件:I nterval属性一一设立计时器事件之间的时间间隔Timer事件: 当达成I nter v al属性规定的时间间隔时触发该事件单选按钮:C apt i o n属性- - - - 标题,默认值为Optionl、 等V alue属性- - - 是否为选中,选中( T r u e )复选框:C ap t ion属性- - - 标题, 默认值为C h e c k 1 ,. . . .等V a l u e属性- - -设立是否为选中,1 (选中)列表框:L ist属性一一用于列出列表框中的所有项目,是一个字符数组,,下标从0 开始。
L istC ount属性- - -返回在列表框中列表项数( 序号从 开始, 最后一项为Li s t Count-1) oL istindex属性- 一 当前选中的列表项的索引,第一项为0T e x t属性一一得到当前列表项的内容控件数组由一组类型相同的控件组成I ndex属性一一控件数组的下标P r iv a t e Sub Command 1 _ Click( I n d e x As I n teger)I f I ndex = 3 then…' 解决第四个命令按钮的操作E nd I f• • •E n d Sub菜单编辑器重要属性:Caption、Name> Index、Shor t c uChecked、Enabled、Visib 1 e。












