您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页VB概述

VB概述

来源:华佗小知识
VB概述

§1 VB的特点

1.可视化的设计平台 2.面向对象的设计方法

对象具有自己的属性(对象的性质)、方法(对象的动作)和事件(对象的响应),它构成对象的三个要素。

3.事件驱动的编程机制 4.集成化的开发环境 5.结构化的设计语言 §4 VB程序设计

VB应用程序的开发有三个步骤: (1)设计应用程序界面。 (2)设置对象的属性 (3)编写事件驱动代码

保存工程 简便方法:

执行“文件/保存工程”命令 (第一次保存文件)系统先打开“文件另存为”对话框,保存窗体文件(或标准模块文件),然后再打开“工程另存为”对话框,保存工程文件。

保存修改后的工程文件

选择“文件/保存工程”命令保存所做的修改,(保存与工程有关的修改过的窗体文件或标准模块文件)。

VB基础知识 常量

(1)字符串常量

用双引号括起来的字符序列(除双引号和回车符)。 例如: \"China\"

“I am a student.” \"95.3%\"

\"计算机软件\" (2)数值常量

整型 1234(十进制)

长整型 12345678(十进制)

单精度数:有三种形式,12.34,123!,123.45E-5 双精度数:有两种形式,12.34#,123.45D-5 在常数后面加上类型说明符: % 整型 & 长整型 ! 单精度 # 双精度 $ 字符串型。 2. 符号常量

格式:Const常量名 = 表达式

功能:定义一个符号常量来表示表达式的值。 说明:“常量名”可加以类型说明符。符号常量的类型由类型说明符或表达式的类型决定。 Const PI = 3.141593

变量

1. 变量的命名

变量名以字母开头,后跟字母、数字和下划线组成 说明:

(1)变量名不能是保留字

(2)VB变量名不区分字母大小写。

2. 变量的类型

(1)用类型说明符

在变量的尾部加上类型说明符: % 整型 & 长整型 ! 单精度 # 双精度 $ 字符串型。

例如:Num%,Str1$均是合法的变量名 在引用时,可以省略类型说明符。 (2)定义变量时声明其类型 格式:Dim 变量名 As 类型

“类型”可为基本数据类型或用户自定义的类型。 Boolean(布尔型) Long(长整型)

Single(单精度型) Double(双精度型) String(字符串型) Variant(变体型) 用户自定义类型 例如:

Dim str1 As String , country As String*20 Dim i As Integer , sum As Single

定义变量后,数值型变量的初值为0 字符型变量的初值为空字符串 其中:

变长字符串的初值是长度为0

定长字符串的初值的长度等于定义值。

3. 变体类型变量 如未定义类型的变量 例如:Dim sum As Variant Dim sum

运算符与表达式

1. 算术运算符(8种) 优先级(从高到低): 指数(∧) 取负(-)

乘法、浮点除法(* , /)

整数除法(\\) 取模(Mod)

加法、减法(+ , -)。

整除:被除数和除数为整数,结果为整数。 31.7 \\ 5.88

32\\6 结果为:5

取模(求余)运算:结果为整数除法的余数。 31.77 Mod 5.88 (四舍五入) 32 Mod 6, 余数为2 3 Mod 6 余数为3 字符串表达式

字符串运算符: & 或 +

功能:把字符串连接成一个字符串。 说明:

(1) 符号“&”与字符串变量之间应间隔一个空格, 例如:

str1 & str2

(2)“&”能强制把其它类型的数据转换为字符串, 而“+”不能。 例如:

2008 & \"奥运会\" 2008奥运会 \"2008\" + \"奥运会\" 2008奥运会 注意:

Print \"123\" + 567 结果:690

Print \"abc\" + 567 出错:类型不匹配

常用内部函数 数学函数 函 数 Abs(x) Int(x) Cint(x) Exp(x) Log(x) Sqr(x) Rnd 字符串函数 Len(str) Left$(str,n) Right$(str,n) Mid$(str,p[,n]) 返回字符串长度 取字符串左边n个字符 取字符串右边n个字符 从位置p开始,取n个字符,如n省略,取到最后 功 能 返回x的绝对值 求不大于x的最大整数 Int(7.8)结果为7, Int(-7.8)结果为-8 把x小数四舍五入,转换为整数, 计算ex,e是自然数2.718281 求x的自然对数 求x的平方根 返回0~1之间的随机数: Str$(num) Val(str) Asc(str) Chr$(n) 数值转字符串 字符串转数值 返回字符串首字母ASCII码 ASCII码转字符 说明:

(l)三角函数Sin、Cos和Tan自变量的单位是弧度 反正切函数Atn(x)的返回值单位为弧度。 度转换为弧度:1° = 3.14159/180 *x

(2)用函数Rnd可以产生不同的随机数。 产生指定范围的随机数:

l 产生0~n之间的随机数(不含0和n) Rnd*n

l 产生0~n之间的随机整数(含0,不含n) Int(Rnd*n)

l 产生a~b之间的随机整数(含a,不含b) Int((b-a)*Rnd+a)

l 产生a~b之间的随机整数(含a和b) Int((b-a+1)*Rnd+a)

顺序结构

结构化程序三种基本结构:

顺序结构、选择结构和循环结构。 1 赋值语句 变量 = 表达式 属性名 = 属性值 注意:

当变量类型与表达式的类型不同时,VB自动将表达式的类型强制 转换为变量类型。 例如:

Dim Num As Integer

Num=8. (将9赋给Num,四舍五人) 3 数据输入

方法1:用文本框 例:Dim m As Integer m=Val (Text1.Text)

方法2:用Inputbox()函数 例:m =Val(InputBox(\"enter m:\")) 方法3:从文件输入 Input#2,m

4 输出数据

方法1:用文本框

例:Text1.Text=n 或 Text1=n 方法2:用标签

例:Label1.Caption = n 方法3:用Print方法 例:Print n

方法4:输出到列表框 例:List1.AddItem n 方法5:输出到文件

例:Open \"abc.dat\" For Output As #1 Write#1, n

【例】交换变量a、b的值。

用中间变量t作暂存单元,必须与交换的变量同类型。 t = a : a =b : b = t

3.2 窗 体

窗体常用的方法Print, 窗体事件 1. Click事件 2. Load事件

Load是把窗体装入工作区事件,

Form_Load()事件是执行程序时自动触发的,因此常用来在 启动程序时对属性和变量进行初始化。 3. UnLoad事件

关闭窗体触发该事件

选择结构

满足条件为“真”,用“True”表示; 不满足条件为“假”,用“False”表示。 关系表达式

1. 关系运算符(6种) = 、<>、<、>、<=、 >= 优先级相同,运算从左到右。 2. 关系表达式 例如:“apply” > “apple” 按ASCII码逐字符进行比较。

空格<“0”„“9”<“A”„“Z”<“a”„“z” “apply” > “apple” 结果为 True

逻辑表达式

逻辑运算符: Not、 And、 Or 优先级:

逻辑非(Not)、逻辑与(And)、逻辑或(Or)

注意:

表示:a≤x≤b a <= x And x <= b 选择结构

1.单行If语句

If 条件 Then 语句组1 [Else 语句组2] 语句组:各语句间需用“:”分隔。

2.块结构If语句 If 条件 Then 语句块1 Else 语句块2 End If

例:计算分段函数 1+x (x≥0) y=

1-2x (x<0) If x>=0 Then y=1+x Else y=1-2*x End If

用单行If语句:

If x>=0 Then y=1+x Else y=1-2*x 或:

If x>=0 Then y=1+x If x<0 Then y=1-2*x

3.多分支选择结构 If 条件1 Then 语句块1

ElseIf 条件2 Then 语句块2

ElseIf 条件3 Then 语句块3 „„ Else

语句块n+1 End If

从多个条件中,选择执行一个语句块 “纵然分支众多,仅选其一”

说明:

当有多个条件为真时,只能执行最前面的一个语句块。 注意:ElseIf之间不能有空格

【例】学生成绩判定。

Private Sub Command1_Click()

x =Val(InputBox(\"输入学生成绩:\")) If x >=90 Then Print “优” ElseIf x >=80 Then Print “良” ElseIf x >=70 Then Print “中” ElseIf x >60 Then Print “及格” Else

Print “不及格” End If End Sub

4.2.4 IIf函数

IIf是单行If语句的简单版本。

变量 = IIf(条件,True部分,False部分) 注意:IIf函数中的三个参数都不能省略。

例:计算分段函数 1+x (x≥0) y=

1-2x (x<0)

Private Sub Command1_Click() Dim x As Single,y As Single x= Val(Text1.Text)

y=IIf(x>=0,1+x,1-2*x) Text2.Text = y End Sub

【例】判闰年。 闰年的条件:

(1)被4整除,但不能被100整除; (2)能被400整除。 最好:

If x Mod 400 = 0 Then y$ = \"是闰年\"

ElseIf x Mod 4 = 0 And x Mod 100 <> 0 Then

y$ = \"是闰年\" Else

y$ = \"不是闰年\" End If

也可

x = Val(InputBox(\"输入年份\"))

If x Mod 4 = 0 and x Mod 100 <> 0 or x Mod 400 = 0 Then y$ = \"是闰年\" Else

y$ = \"不是闰年\" End If

4.Select Case语句

用于实现多分支结构。 Select Case 测试表达式 Case 条件1 语句块1 Case 条件2 语句块2 „„ Case Else 语句块n+1 End Select

功能:

从多个条件中选择执行第一个符合条件的语句,都不符合, 则执行Case Else后的语句块。 注意条件:

常量表: 1,3,5

测试范围:10 to 20,“a” to “z” 比较范围:Is < 10 (不能为逻辑表达式) 【例】学生成绩评定

Private Sub Command1_Click()

x = Val(InputBox(\"输入考试成绩\")) Select Case x Case 90 To 100 y$ = \"优\" Case 80 To y$ = \"良\" Case 70 To 79 y$ = \"中\" Case 60 To 69 y$ = \"及格\"

Case 0 To 59 y$ = \"不及格\" Case Else

y$ = \"输入错误\" End Select

Form1.Print \"成绩:\"; x, \"等级:\"; y$ End Sub

循环结构

“当型”循环:当条件为真,执行循环体。 “直到型”循环:做循环,直到条件为真为止。 1.For-Next循环

常用于循环次数已知。

For 循环变量 = 初值 To 终值 [Step步长] 循环体 [ Exit For ]

Next 循环变量

【例】计算n!。

Private Sub Command1_Click()

n = Val(InputBox(\"输入一个自然数\")) Term = 1

For i = 1 To n Term = Term * i Next i

Print n; \"!=\"; Term End Sub

【例】计算2 + 4 + 6 + „„ + 100的值。 Private Sub Command1_Click() Sum = 0

For x = 2 To 100 Step 2 Sum = Sum + x Next x

Form1.Print \"Sum=\"; Sum End Sub

【例】计算1 + 2! + 3! + „„ + 10! Private Sub Command1_Click() T = 1 S = 0

For k = 1 To 10 T = T * k

S = S + T Next k Print S End Sub

2.While-Wend循环

适合处理循环次数未知的循环。 While 条件 语句块 Wend

功能:当条件为真时执行循环。

【例】计算1+2+3+„„+100 Private Sub Command1_Click() Dim n As Integer, s As Integer s=0 n =1

While n<=100 s=s+n n=n+1 Wend

Lable1.Caption=“1+2++3+„„+100=”& s End Sub

3.Do-Loop循环 Do 语句块 [Exit Do]

Loop [While|Until 条件]

Do [While|Until 条件] 语句块 [ Exit Do ] Loop 功能:

While 条件——当“条件”为True执行循环体。 Until 条件——“条件”为False执行循环体。 如无条件,则为死循环。 说明: 格式1:“先循环,后判断”,至少执行一次循环。 格式2:“先判断,后循环”,如条件不满足,则一次循环也不执行。 【例】计算1+2+3+„„+100 s=0 n =1

Do while n<=100

s=s+n n=n+1 Loop 也可 s=0 n =1

Do Until n>100 s=s+n n=n+1 Loop

【例】将十进制数转换为二进制数 Private Sub Form_Click() Dim m As Integer

m = InputBox(\"enter m:\") a$ = \"\"

While m <> 0 r = m Mod 2 a$ = r & a$ m = m \\ 2 Wend Print a$ End Sub 注意: a$ = a$ & r 则为:4=001

列表框

列表框的方法

AddItem方法:用于在列表框中插入一个列表项。 格式:

列表框. AddItem 项目字符串[,索引值]

如省略索引值,则在列表框的最后插入新列表项。 【例】将文本框内容添加到列表框1 Private Sub Command1_Click() List1.AddItem Text1.Text End Sub

多重循环 说明:

(1)必须完整嵌套,不得交叉。

(2)Exit For语句和Exit Do语句只能退出当前层循环。 指定每行显示数据的个数

For n=1 to 30 Print n; ” ”;

If n Mod 10 = 0 Then Print Next n

' 每显示10个数据换行 常用算法(1)

1. 不定方程求解。 【例】百鸡问题 x+y+z=100 5x+3y+z/3=100

Private Sub Command1_Click() Dim x As Integer

Dim y As Integer, z As Integer

Print \"公鸡\母鸡\小鸡\" For x = 0 To 20 For y = 0 To 33 z = 100 - x - y

If 5 * x + 3 * y + z / 3 = 100 Then Print x, y, z End If Next y Next x

End Sub

2.求最大公约数和最小公倍数 辗转相除法:

【例】计算最大公约数和最小公倍数。 Private Sub Command1_Click() Dim m As Integer, n As Integer Dim u As Integer, v As Integer m = Val(Text1.Text) n = Val(Text2.Text) If m > n Then u = m: v = n Else

u = n : v = m End If Do

r = u Mod v u = v v = r

Loop Until r = 0

Print \"最大公约数:\"; u

Print \"最小公倍数:\"; m * n / u End Sub 或

r = u Mod v Do While r<>0 u = v v = r

r = u Mod v Loop

Print \"最大公约数:\"; v

3.判素数(质数)

【例】判n是否为素数。 Private Sub Command1_Click() Dim n As Integer, i As Integer n = Val(InputBox(\"输入正整数\")) For i = 2 To n - 1

If n Mod i = 0 Then Exit For Next i

If i > n - 1 Then Print n; \"是质数\" Else

Print n; \"不是质数\" End If End Sub

例 求100~200之间素数,并写入顺序文件。 Private Sub Command1_Click()

Open “shusu.dat” For Output As #1 For n= 101 To 200 step 2 S=1 ‘是 For i = 2 To Int(Sqr(n)) If n Mod i = 0 Then S=0 ‘不是 Exit For End If Next I

If s=1 Then Write#1, n Next n close #1 End Sub

添加到列表框:

List1.AddItem n

数 组

6.1 静态数组

编译时分配存储空间。 定义:Dim b(3,4)As Long

分配4×5个长整型变量的空间, 二维数组在内存按行的顺序存放 b(0,0) b(1,0) b(2,0) b(3,0) b(0,1) b(1,1) b(2,1) b(3,1) B(0,2) B(1,2) B(2,2) B(3,2) b(0,3) b(1,3) b(2,3) b(3,3) b(0,4) b(1,4) b(2,4) b(3,4)

例:Dim b(3,2 to 4,1 to 3) As Integer 共分配 4×3×3=36个元素,共72 Byte

Option 语句

格式:Option Base 1

注意:只能出现在窗体层或模块层 必须位于数组定义之前。 例:

Option Base 1

„„

Dim a(10) As Integer,x(5,5) As String 每一维下标的下界均从1开始。

动态数组

运行时分配内存区, 定义分两步进行:

(1)先在窗体层、标准模块或过程中Dim或Public声明一个 没有下标的数组。

(2)过程中用ReDim语句定义带下标的数组。

说明:

声明时不指定数组的维数

数组的维数由第一次出现的ReDim语句指定。

例如:

Dim Test() As Integer Dim n As Integer Sub Form_click() „„

n=InputBox(”Enter a value:”)

ReDim Test(n) „„ End Sub

数组元素的引用

形式: 数组名(下标)

数组元素赋初值

运行前对数组进行初始化。

格式:数组变量名=Array( 初值表 )

说明:数组下标下界缺省为0,只能对一维数组初始化 【例】

Dim a As As Variant

a=Array(1,2,3,4,5,6,7) 注意:下标从0~6

【例】一维数组元素赋初值。 Option Base 1

Private Sub Form_Click() Dim a As Variant

a = Array(1, 2, 3, 4, 5, 6, 7) For i = 1 To 7 Print a(i); Next i End Sub

运行结果:

1 2 3 4 5 6 7

数组输入/输出

一般通过For循环语句和InputBox函数实现, 一维数组用单重循环。 二维数组采用双重循环。

【例】一维数组的输入和输出。 For i = 1 To 10

a(i) = InputBox(\"Enter data:\") Next i

【例】二维数组的输入和输出。 1 2 3 4 5 6 7 8 9

For i = 1 To 3 For j = 1 To 3

a(i, j) = InputBox(\"enter data:\") Next j Next i

For i = 1 To 3 For j = 1 To 3 Print a(i, j); \" \"; Next j Print Next i

【例】用Rnd产生10个0~100之间随机数。 For i = 1 To 10

a(i) = Int(100 * Rnd) Next i

用户自定义类型 定义格式:

Type 自定义类型名 元素名1 As 类型名 元素名2 As 类型名 „„

元素名n As 类型名 End Type

其中:

类型名——可为任何基本类型,也可为用户自定义类型。

说明:

(1)一般在标准模块中定义,默认为Public。

如在窗体模块的“声明”段定义,则必须加上Private, 且只能在窗体模块中使用。

(2)自定义类型中的元素可以为数组名。 【例】

Private Type student num As String * 8 name As String * 8 total As Integer average As Integer End Type

1.自定义类型变量的声明 Dim 变量名 As 自定义类型名 例如:

Dim stud As Student

2.引用自定义类型变量中的元素 形式:变量名 .元素名

3.自定义类型数组的声明和使用 声明:Dim st(5) As Student 引用形式:

记录数组元素.成员名

【例】输入5个学生的学号、姓名、和3门课的成绩,利用自定义类型数组,计算每个学生的总分和平均分,并按平均成绩从高到低输出学生的成绩单。 Private Type student no As String * 6 name As String * 6 s1 As Single s2 As Single s3 As Single total As Single aver As Single End Type

Private Sub Form_Click()

Dim a(1 To 5) As student, t As student Open “stud.dat” For Output As #1

‘ Open “stud.dat” For Random As #2 Len= Len(t) 打开随机文件 „„ n = 5

For i = 1 To n

a(i).total=a(i).s1+a(i).s2 + a(i).s3 a(i).aver = a(i).total / 3 Next i

For i = 1 To n - 1 For j = i + 1 To n

If a(i).aver < a(j).aver Then t = a(i) a(i) = a(j) a(j) = t End If Next j Next i

Print \" 学号 姓名 语文 数学 英语 总分 平均分\" For i = 1 To n

Print Tab(2); a(i).no; Tab(10); a(i).name; Tab(18); a(i).s1; \" \";

Print a(i).s2; \" \"; a(i).s3; \" \"; a(i).total; \" \"; a(i).aver

Write#1,a(i).no,a(i).name,a(i).s1, a(i).s2,a(i).s3,a(i).total, (i).aver ‘ Put#2,i, a(i) 写入随机文件 Next i Close#1 End Sub

注意: 写入文件一行一个记录

运行结果

说明:

交换两个记录数组元素的值,则该记录数组元素的所有成员都将交换。

6.7 常用算法(2) 1. 求最大值和最小值

【例】找10个数中的最大值与最小值。 For i = 1 To 10

If a(i) > Max Then Max = a(i) If a(i) < Min Then Min = a(i) Next i

6.7.2 排序

升序:从小到大 降序:从大到小

1.比较交换法 For i = 1 To n - 1 For j = i + 1 To n If a(i) > a(j) Then t = a(i) a(i) = a(j) a(j) = t End If Next j Next i

2.选择法排序 For i = 1 To n - 1 p = i

For j = i + 1 To n

If a(p) > a(j) Then p = j Next j t = a(i)

a(i) = a(p) a(p) = t Next i

3.冒泡法排序

特点:相邻的两个元素进行比较 For i = 1 To n - 1 For j = 1 To n - i

If a(j) > a(j + 1) Then t = a(j)

a(j) = a(j + 1) a(j + 1) = t End If Next j Next i

查询

1. 顺序查询

从一组数据中,按顺序地查找指定的数据。 【例】用顺序查询法在下列数据中查找关键字值 „„

k = Val(InputBox(\"输入要查询的数\")) p = 1

While k <> a(p) And p < n p = p + 1 Wend

If k = a(p) Then

Print k; \"be found,on\"; p; \"th position.\" Else

Print k; \"has not be found.\" End If

2 折半查询

折半查找也称为二分法查询 只能对有序数列进行查询。

【例】用折半查询法查找关键字值66。 -123,-10,5,8,30,56,59,66,90,518 Option Base 1

Private Sub Form_Click() Dim a As Variant

a = Array(-123, -10, 5, 8, 30, 56, 59, 66, 90, 518) n = UBound(a)

Print \"数组a中的10个数为:\"

For Each ii In a Print ii; \" \"; Next ii Print

k = Val(InputBox(\"输入要查询的数\")) Print \"要查询的数是:\"; k low = 1 hig = n

find = -1

While low <= hig And find = -1 m = (low + hig) \\ 2 If k = a(m) Then find = 1

Print k; \"has be found,on\"; m; \"th position.\" Else

If k < a(m) Then hig = m - 1 Else

low = m + 1 End If End If Wend

If find = -1 Then

Print k; \"has not be found.\" End If End Sub

注意:若数据按降序排列 If k < a(m) Then low = m + 1 Else

hig = m - 1 End If

【例】输出前5名名次、运动员号和成绩, 并将结果写入顺序文件。 Private Sub Form_Click()

Open “stud.dat” For Output As #1 Dim no(1 To 16) As String Dim a(1 To 16) As Single For i = 1 To 16

no(i) = InputBox(\"输入运动员编号:\")

a(i) = Val(InputBox(\"输入运动员成绩:\")) Next i

For i = 1 To 15 k = i

For j = i + 1 To 16

If a(k) > a(j) Then k = j Next j t = no(i) no(i) = no(k) no(k) = t t = a(i) a(i) = a(k) a(k) = t End If Next i

Print \"名次 运动员编号 运动员成绩\" For i = 1 To 5

Print i, no(i), a(i) Write#1,i,no(i),a(i) Next i End Sub

过 程

函数过程的定义

Function函数过程名(形参表) [As 类型] „„

函数过程名=表达式 „„

End Function 说明:

函数过程名有值,有类型,在过程体必须被赋值 调用形式:

函数过程名(实参表)

子程序过程定义

Sub 子程序过程名(形参表) „„ End Sub

说明:子程序过程名无值,无类型

调用形式:

Call 子程序过程名(实参表)

【例】函数过程使用 编写函数过程计算n!

Private Sub Command1_Click() n = Val(Text1.Text) Text2.Text =fact(n) End Sub

Function fact(n) f = 1

For i = 1 To n f = f * i Next i fact = f

End Function

【例】子程序过程计算n!

Private Sub Command1_Click() n = Val(Text1.Text) Call fact(n, f) Text2.Text = f End Sub

Private Sub fact(n, f) f = 1

For i = 2 To n f = f * i Next i End Sub

说明:

由若干变元计算一个值用Function过程 计算若干值,只能用Sub过程。

7.3 参数传送 1传值方式

将实参的值传给形参,数据传送方向为单向,形参的改变 对实参无影响。

实参:常量、(变量)、或表达式 形参:变量 或 实参:变量

形参前加关键字ByVal

例:Sub fact(ByVal n)

2传址方式

将实参的地址传给形参,使实参和形参共用同一存储单元。 数据传送方向为双向,形参的改变对实参有影响。 实参:变量、数组名() 形参:变量、数组名() 或 形参 前加ByRef 例:Sub fact(ByRef n) VB默认方式为传址方式

说明:

从过程中,返回计算结果,必须采用传址方式。 Private Sub Form_Click() n = 100 m = 200

Call abc(n, m) Print n, m End Sub

Public Sub abc(ByVal x, y) t = x x = y y = t Print x, y End Sub

输出:200 100 100 100

变量的作用域

作用域指变量能被某一过程识别的范围。 1.全局变量

在标准模块的通用段用Public声明变量 可在工程的所有模块、所有过程中使用 作用范围为整个应用程序。 例如:

Public x As Integer,y As Single

2.模块级变量

在窗体或标准模块的通用段 用Private或Dim声明变量

作用域:在声明它的整个模块的所有过程有效。 例如:

Private x As Integer,y As Single 或

Dim x As Integer,y As Single

3.局部变量

在过程中定义的变量

作用域:为其所在的过程。

随过程的调用而分配存储单元,过程执行结束,所占用的存储 单元被释放。

静态变量:

用Static声明的局部变量,在过程调用结束后保留值。

【例】动态变量、静态变量和模块级变量的作用域。 Dim c As Integer

Private Sub Form_Click() a = 1: b = 2: c = 3 Print \" a\ For i = 1 To 3 Call test Next i

Print \" A\ Print a, b, c End Sub

Sub test() Static a a = a + 1 b = b + 1 c = c + 1

Print a, b, c End Sub

数据文件

1. 顺序文件的打开

格式:Open “文件名” For <方式> As [#]<文件号> 方式:

Output—顺序写入方式

Input—顺序读出方式,指定的文件必须存在。 Append—顺序添加方式

写顺序文件语句(建立文件)

格式:Write#文件号,输出项表

功能:将输出项表中的数据写入顺序文件。

说明:各项之间用逗号分隔。 【例】建立一个学生成绩文件P Private Sub Form_Click()

Dim no As Long, nam As String Dim score As Single

Open \"d:\\chengji1.dat\" For Output As #2 no = InputBox(\"输入学号:\") While no <> 99999

nam = InputBox$(\"输入学生姓名:\") score = InputBox(\"输入学生成绩:\") Write #2, no, nam, score no = InputBox(\"输入学号:\") Wend Close #2 End Sub

读顺序文件语句

(1) Input#语句 格式:Input#文件号,变量表

功能:从顺序文件中读数据,赋给变量表中的变量。 说明:

变量表中的变量类型必须与文件中数据项的类型一致

【例】将学生成绩文件“chengji1.dat”读入内存,在窗体上显示出来。P Private Sub Form_Click()

Dim no As Long, nam As String Dim score As Single

Open \"d:\\chengji1.dat\" For Input As #2 Print \" 学号\姓名\成绩\" While Not Eof(2)

Input #2, no, nam, score Print no, nam, score Wend Close #2 End Sub

Line Input#语句

格式:Line Input#,字符串变量

功能:从顺序文件中读取一整行赋给一个字符串变量。 说明:

将以回车符为结束标志的整行当作一个字符串赋给一个字符串变量。

常用控件 窗体

设计称窗体,运行后称窗口 Print方法:在窗体输出数据 Show方法:显示窗体。

Click事件:鼠标单击窗体,调用窗体事件过程Form_Click() Load事件:执行程序时自动触发 Unload事件:关闭窗体时执行

文本框:

Text属性——文本框中显示的内容,默认值为Text1、„„等。 Text1.Text = 字符串 或 Text1 = 字符串

Change事件:改变Text属性时触发 GotFocus事件:获得焦点时触发

SetFocus方法:设置焦点,将光标移到文本框

标签控件:

Caption属性——标签中显示文本,默认值为Label1、„„。 命令按钮:

Caption属性——命令按钮显示的字符

Enabled属性——设置命令按钮是否为活动状态(True)

Click事件:鼠标单击事件,调用命令按钮事件过程Command1_Click()

计时器控件:

Interval属性——设置计时器事件之间的时间间隔

Timer事件:当达到Interval属性规定的时间间隔时触发该事件。 单选按钮:

Caption属性——标题,默认值为Option1、„„等。 Value属性——是否为选中, 选中(True) 复选框:

Caption属性——标题,默认值为Check1、„„等。 Value属性——设置是否为选中,1(选中) 列表框:

List属性——用于列出列表框中的所有项目,是一个 字符数组,,下标从0开始。

ListCount属性——返回在列表框中列表项数 (序号从0开始,最后一项为ListCount-1)。

ListIndex属性——当前选中的列表项的索引,第一项为0 Text属性——得到当前列表项的内容 控件数组

由一组类型相同的控件组成

Index属性——控件数组的下标。

Private Sub Command1_Click(Index As Integer)

If Index = 3 then

„ ‘处理第四个命令按钮的操作 End If

„ End Sub

菜单编辑器 主要属性:

Caption、Name、Index 、Shortcut、 Checked、Enabled、Visible

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务