数组的定义与声明

在使用数组之前,一般要声明数组,当然也可以采用隐式声明的方法。声明数组的方法与声明各种类型的变量一样,可以用Dim,Private,Public或Static来声明,只不过声明数组时需要设置数组的上下界,也就是数组下标索引的起始值和中止值。

(1)静态数组:

其声明的语法如下:

    Dim│Private│Public│Static 数组名([下标下界 To]下标上界) [As 数据类型]

说明:

数组名后是圆扩弧“( )”扩起来,不能采用其它符号。

如果不指明数组的下标下界,系统默认为是0,数组的下标上界,使用长整型(Long)数据,在VB中规定上界不得超过2,147,483,647。

下标的下界不能大于下标的上界;

可以用变量名或常数名(以及实数)作为下标边界,当下标的边界是常数名时,数组的大小固定(静态数组),当下标的边界是变量名时,数组的大小可作动态定义(动态数组)。

Dim A(10) As Integer'表示数组名为A,缺省下标界为0,上界为10的有11个整型元素的数组,即:从A(0),A(1)到A(10);

Dim B(1 To 20) As Integer'表示数组名为B,下标下界为1,下标上界为20的,有20个整型的元素;

Dim BirthDay (1 To 10) As Date'表示BirthDay是一个索引从1到10的Date型数组。

Dim DayArray (50)'表示变量是一个有51个索引元素的Variant数组;

Public Class (10) As String'声明一个长度为11的全局整型数组Class;

Dim Matrix(3,4) As Integer'表示变量是一个二维整型数组;

Dim MyMatrix(1 To 5,4 To 9, 3 To5) As Double'表示变量是一个显示指定了上下界的三维double数组;

为数组赋初值可以采用循环语句。如:

    Dim I As Integer

            For I=0 To 11

        C(I)=I      'C(0)、C(1)、……C(11)

    Next I

例:下面的练习使用一个名为Temperatures的一维公用数组来记录一周七天的日最高气温。

界面:

在窗体上添加3个命令按钮,窗体的AutoRedraw属性设定为True。——当使用Print方法在窗体中显示信息时,始终将窗体的AutoRedraw属性设定为True。这样,当窗体被另一个窗口遮盖然后该窗体重新显示时,VisualBasic将自动重新绘制屏幕。

注:没有使用强制声明“Option Explicit”语句。

代码:

Dim Temperatures(6) As Variant


Private Sub Command1_Click()

    Cls

    Prompt$ = "Enter the high temperature."

    For i% = 0 To 6

        Title$ = "Day" & i%

        Temperatures(i%) = InputBox(Prompt$, Title$)

    Next i%

End Sub


Private Sub Command2_Click()

    Cls

    Print "High Temperatures for the week:"

    Print

    For i% = 0 To 6

        Print "Day "; i%, Temperatures(i%)

        Total! = Total! + Temperatures(i%)

    Next i%

    Print

    Print "Average high temperature: "; Total! / 7

End Sub

Private Sub Command3_Click()

    End

End Sub

说明:该程序是演示如何在程序中使用数组存放和处理一组相关数值。通过使用InputBox函数和For...Next循环,气温值被赋值给数组。循环中循环计数器被用来索引数组中的每个元素。数组内容通过使用For...Next循环和Print(打印)方法显示在窗体中,接着平均最高气温就被计算并显示出来了。

也可利用For循环嵌套有效地处理多维数组。例:

    Dim i As Integer,j As Integer '设置计数器

    Dim class(14) As String  '定义班级名称数组

    Dim studentname(14,35) As String  '定义学生姓名数组

    ……  '为班级数组赋值

    ……   '为学生数组赋值

    For i=0 To 14

            For j=0 To 35 

                If studentname(i,j)="张三" Then

                        MsgBox "张三在"十class(i)

                    End If

                Next j

    Next i