vb程序设计实用教程 vb程序设计实例100

vb程序设计实例100的示例性实施例 。图1是根据本发明的一个实施例的计算机系统的框图 。图2是根据本发明的一个实施例的计算机系统的框图 。
一:vb程序设计实例100分类:电脑IT
四、数组中常见错误和注意事项

1.静态数组声明下标出现变量

n = InputBox("输入数组的上界")

Dim a(1 To n) As Integer

2.数组下标越界

引用的下标比数组声明时的下标范围大或小 。

Dim a(1 To 30) As Long, I as integer

a(1) = 1: a(2) = 1

For i = 3 To 30

a(i) = a(i - 2) + a(i - 1)

Next I

3.数组维数错

数组声明时的维数与引用数组元素时的维数不一致 。

Dim a(3, 5) As Long

a(I)=10

4.Aarry函数使用问题

只能对Variant 的变量或动态数组赋值 。

5.获得数组的上界、下界

UBound 、Lbound函数

1.Dim数组声明

有时用户为了程序的通用性,声明数组的上界用变量来表示,如下程序段:

n=InputBox("输入数组的上界")

Dim a(1 To n)As Integer

程序运行时将在Dim语句处显示"要求常数表达式"的出错信息 。即Dim语句中声明的数组上、下界必须是常数,不能是变量 。

解决程序通用的问题,一是将数组声明的很大,这样浪费一些存储空间;二是利用动态数组,将上例改变如下:

Dim a()As Integer

n=InputBox ("输入数组的上界")

ReDim a(1 To n) As Integer

2.数组下标越界

引用了不存在的数组元素,即下标比数组声明时的下标范围大或小 。例如,要形成有如下30项的斐波那契数列:

1,1,2,3,5,8,13,21,34,…,317811,514229,832040

正确的程序段如下:

Dim a(1 To 30) As Long, i%

若将For i=3 To 30改为For i=1 To 30,程序运行时会显示"下标越界"的出错信息,因为开始循环时i=l,执行到循环体语句a(i)=a(i-2)+a(i-1),数组下标i-2、i-1均小于下界1 。

同样若将上例:a(i)=a(i-2)+a(i-1)语句改为:a(i+2)=a(i)+a(i+1) 。

程序运行时也会显示"下标越界"的出错信息,这时是数组下标大于上界30 。

3.数组维数错

数组声明时的维数与引用数组元素时的维数不一致 。例如,下程序段为形成和显示3×5的矩阵:

Dim a(3,5) As Long

For i=1 To 3

For j=1 To 5

a(i)=i*j

Print a(i);"";

Next j

Print

Next i

程序运行到a(i)=i*j语句时出现"维数错误"的信息,因为在Dim声明时是二维数组,引用时的一个下标 。

4.Array函数使用问题

Array函数可方便地对数组整体赋值,但此时只能声明Variant的变量或仅由括号括起的动态数组 。赋值后的数组大小由赋值的个数决定 。

例如,要将1,2,3,4,5,6,7这些值赋值给数组a,表2.5.1列出了三种错误及相应正确的赋值 ***。

表2.5.1Array函数表示 ***

错误的Array函数赋值
改正的Aarry函数赋值

Dim a(1 To 8)

a=Array(1,2,3,4,5,6,7,8)
Dim a( ) a=Array(1,2,3,4,5,6,7)

Dim a As Integer a=Array(1,2,3,4,5,6,7)
Dim a a=Array(1,2,3,4,5,6,7)

Dim a

a()=Array(1,2,3,4,5,6,7)
Dim a a=Array(1,2,3,4,5,6,7)

5.如何获得数组的上界、下界

Array函数可方便地对数组整体赋值,但在程序中如何获得数组的-上界、下界,以保证访问的数组元素在合法的范围内,可使用UBound和LBound函数来决定数组访问 。

在上例中,若要打印a数组的各个值,可通过下面程序段实现:

For i=Lbound(A) To Ubound(A)

Print a(i)

Next i

6.给数组赋值

VB6.0提供了可对数组整体赋值的新功能,方便了数组对数组的赋值操作 。但真正使用不那么方便,有不少限制 。数组赋值形式如下:

推荐阅读