Excel VBA基础语法——数组(四)

        上一节中学习了变量类型、变量声明和赋值使用、作用域等内容,在声明变量的过程中会出现一次性需要声明多个同类型变量的情况,如果还是按照常规的方法,那么程序就比较杂乱,为了一次性声明多个同类型变量,引入了数组的概念。数组就是同类型多个变量的集合,也是变量。数组声明的语法规则如下:

        dim 数组名  (a  to   b)  as  数据类型

        如:dim  七6班 (1  to 50 )as   string   ‘声明一个数组名为七6班数据容量为50的string变量,即声明了50个变量名为七6班1、2......50的string类型变量

        声明数组时,也可以用一个自然数n指定数组长度,该自然数作为数组的最大索引号,但数组默认索引号是0,数组长度为n+1,如:

       dim  arr(49)as   string    ”数组长度为50,如果在模块的第一句写上option  base  1,尽管只使用一个自然数确定数组长度,数组起始索引号也是1。

        如:sub  sztest() 

                dim  arr (1  to 10)as  integer,i as  integer

                for i  =  1  to  10

                    arr(i)= i              ”arr数组赋值

                 next              

                end sub

        多维数组

        上面主要说明了一维数组,实际运用过程中还存在二维、三维......数组,多维数组声明和使用同一维数组类似,如:

        dim   arr1(1 to 10,1 to  10)as  integer   或  dim  arr1(9,9)as   integer

        dim   arr2(1 to 10,1 to 10,1 to 10) as  string   或dim  arr2  (9,9,9) as  string

        声明动态数组

        如果在声明数组时,不能确定数组的长度时,可以在首次定义数组时括号为空,写成:

        dim  数组名称()as  string

         然后在程序中使用redim语句重新制定数组长度。

         如:sub dtsz()

                       dim  arr()as  string

                       dim  n as  long

                       n = application.worksheetfunction.count(range("a:a")) “统计A列有多少个非空单元格

                       redim  arr(1  to  n) as   string     ”重新定义数组大小

                  end  sub

        注意:已经定义大小的数组同样可以使用redim语句重新指定它的大小。

        关于数组的一些知识

        1、将某个单元格区域的值直接存储到数组里,可以直接把单元格区域的值赋值给变量名。

        如:sub  rngarr()

                       dim  arr  as  variant

                       arr = range("a1:c3").value

                       range(“e1:g3”).value = arr

               end sub

        2、将数组中的元素赋值给单元格

       将数组中某个元素赋值给某一单元格。如:range(“a1”).value = arr(1)

       将整个数组元素赋值给单元格区域。 

       如:Sub arr_rng()
                   Dim arr() As Variant
                   arr = Array(2, 4, 8)
                   Worksheets("sheet2").Range("a3:c3").Value = arr
            End Sub

        如: Sub arr_rng()
                       Dim arr() As Variant
                       arr = Array(2, 4, 8)
                       Worksheets("sheet2").Range("a3:a5").Value = WorksheetFunction.Transpose(arr)
                 End Sub

        如:Public Sub arr_rng()
                         Dim arr(1 To 2, 1 To 3) As Variant
                         arr(1, 1) = 1
                         arr(1, 2) = "张勇"
                         arr(1, 3) = "男"
                         arr(2, 1) = 2
                         arr(2, 2) = "林梅"
                         arr(2, 3) = "女"
                         worksheets("sheet2").range("A1:C2").value = arr
           End Sub

你可能感兴趣的:(Excel VBA基础语法——数组(四))