vb基础 下载本文

1 表示第一维,2 表示第二维,如此类推。如果省略指定的维数,就默认为是 1。

关于如何使用LBound 函数与 UBound 函数可参见下例:

Dim A(1 to 100,3,-3 to 4) As Integer '定义一三维数组,假定没有使用OptIon Base 语 '句改变数组下界的默认值。

对数组A使用Lbound 和Ubound函数,其返回值列表如下 表 语句 返回值 Lbound(A, 1) 1

Lbound(A, 2) 0

Lbound(A, 3) -3

Ubound(A, 1) 100

Ubound(A, 2) 3

Ubound(A, 3) 4

所有维的缺省下界取决于 OptIon Base 语句的设置。可以看出对一数组使用LBound 函数与 UBound 函数,可用于确定一个数组中元素的个数。 对于那些在声明中用 To 子句来设定维数的数组而言,它们可以用任何整数作为下界而不受OptIon Base 语句的限制。 7、数组的高级应用

尽管数组最通常被用来存储成组的变量,但是在别的一些方面数组也是很有用的。可以将一个数组的内容赋值给另一个数组、创建返回数组的函数,还可以创建返回数组的属性。在许多情况下,这些技术能改进应用程序的性能。 正如可以将一个变量的值赋给另一个变量,例如 StrA = StrB ,也可以将一个数组的内容赋给另一个数组。例如,要将一字节型数组从一个位置复制到另一个位置。可以通过每次复制一个字节来实现,程序如下:

Sub ByteCopy(oldCopy() As Byte, newCopy() As Byte) '参数oldCopy()是源数组,newCopy()是目标数组 Dim i As Integer

ReDIm newCopy (Lbound(oldCopy) To uBound(oldCopy)) '重新定义动态数组

For I = Lbound(oldCopy) To ubound(oldCopy) '循环赋值 newCopy(i) = oldCopy(I) Next End Sub

一个更有效的简单的方法就是直接将一个数组赋给另外一个数组: Sub ByteCopy(oldCopy() As Byte, newCopy() As Byte) '参数oldCopy()是源数组,newCopy()是目标数组

newCopy = oldCopy '利用数组直接进行赋值 End Sub

关于变量赋值有一些规则。例如,虽然可以将一个声明为整型的变量赋给一个声明为长整型的变量而不会产生任何问题,但是将一个长整型变量赋给一个整型变量就很容易导致溢出错误。除了遵守有关数据类型变量之间赋值时的规则外,数组赋值还要遵从另外一些规则,包括数组维数,每一维的大小,以及数组是固定的还是动态的。

①维数、数据类型不同的数组赋值考虑的几个因素

. 赋值符左边的数组类型:固定数组 (Dim x(1 to 10) As Integer) 或者动态数组 (DIm x() AS Integer)。

. 赋值符左边数组的维数是否和赋值符右边数组的维数匹配。

. 赋值符两边数组的每一维的数组元素个数是否匹配。即使数组的声明不同,维数也可能匹配。比如一个数组的每一维元素从 0 开始编号而另一个则从 1 开始,维数也可能匹配。

. 赋值符两边所有元素的数据类型必须是相容的。这些规则和变量赋值的规则是一致的。

表3-6显示了这些因素的影响:

左边数组

维数是否匹配

元素个数是否匹配 赋值的结果

动态 否 是或否

成功。如果需要,左边将重新声明(ReDIm)使其与右边匹配。 动态 是 否

成功。如果需要,左边将重新声明(ReDIm)使其与右边匹配。 动态 是 是 成功。

固定 是或否 是或否

失败并返回一个编译错误。

数组赋值时的错误可能发生在编译时,也可能发生在运行时(例如,如果数据类型不能强制转换或赋值试图重新声明 (ReDIm) 一个静态数组)。设计程序时要添加错误处理以确保数组在赋值之前是匹配的。 ②编写返回数组的函数

从一个函数返回一组值是可能实现的。例如,从一个函数返回一组字节而不必将其先转换为一个字符串然后再转换回来。 Private Sub Form_Load() Dim b As Byte Dim i As Integer

Dim ReturnArray() As Byte b = Cbyte(54)

ReturnArray() = ArrayFunction(b) '调用函数

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

Msgbox ReturnArray(i) '通过弹出消息框循环显示数组值 Next End Sub

Public Function ArrayFunction(b As Byte) As Byte() DIm x(2) As Byte x(0) = b

x(1) = b + CByte(200) x(2) = b + b

ArrayFunction = x '返回结果为数组x End FunctIon

在运行以上示例后, ReturnArray() 是一个三元素数组,其中包含了分配给 ArrayFunction 中数组的值。ArrayFunction 语句将一个数组作为参数传递;且数组的数据类型必须和函数的数据类型相同(在本例中是字节)。因为这是一个函数调用,传递数组时不必带括号。 注意:

1.尽管可以通过赋值给另一个数组(ArrayFunction = x())来返回一个数组,但出于性能方面的考虑,并不推荐使用这种方法。

2.必须为返回数组的函数指定一个类型,这个类型可以是 Variant。这样一来,FunctIon X() As Variant() 是有效的而 FuNctIon X() As () 将失败。 3.当调用一个返回数组的函数时,用来保存返回值的变量也必须是一个数组,而且其数据类型必须和函数返回类型相同,否则将显示一个\类型不匹配\的错误。

数据类型

1.整型

以Integer 表示整型,变量存储为 16位(2 个字节)的数值形式,其范围为 -32,768 到 32,767 之间。Integer 的类型声明字符是百分比符号 (%)。 2.长整型