您的位置:58编程 > vba二维数组的基础介绍是什么 VBA二维数组的基础介绍

vba二维数组的基础介绍是什么 VBA二维数组的基础介绍

2023-05-02 05:33 ExcelVBA编程教程

vba二维数组的基础介绍是什么 VBA二维数组的基础介绍

vba二维数组的基础介绍是什么 VBA二维数组的基础介绍

vba二维数组的基础介绍是什么

既然你已经知道了如何有规划地产生一个清单(一维数组),是时候仔细看一下如何使用数据表了。下面的过程产生一个二维数组,储存国家名称,货币名称和交换汇率。

Sub Exchange()
Dim t As String
Dim r As String
Dim Ex(3, 3) As Variant
t = Chr(9) "tab
r = Chr(13) "Enter
Ex(1, 1) = "Japan"
Ex(1, 2) = "Yen"
Ex(1, 3) = 128.2
Ex(2, 1) = "Mexico"
Ex(2, 2) = "Peso"
Ex(2, 3) = 9.423
Ex(3, 1) = "Canada"
Ex(3, 2) = "Dollar"
Ex(3, 3) = 1.567
MsgBox "Country " & t & t & "Currency" & t & "per US$" _
& r & r _
& Ex(1, 1) & t & t & Ex(1, 2) & t & Ex(1, 3) & r _
& Ex(2, 1) & t & t & Ex(2, 2) & t & Ex(2, 3) & r _
& Ex(3, 1) & t & t & Ex(3, 2) & t & Ex(3, 3), , _
"Exchange"
End Sub

当你运行过程Exchange时,你将看到一个信息框,显示三列信息(见图7-2)



图7-2 显示在信息框上的文本是可以自定义格式的。



数组的维数:

Sub 数组示例():

Dim x As Long, y As Long
Dim arr(1 To 10, 1 To 3) "创建一个可以容下10行3列的数组空间
For x = 1 To 4
    For y = 1 To 3
        arr(x, y) = Cells(x, y) "通过循环把单元格区域a1:c4的数据装进数组中
    Next y
Next x
MsgBox arr(4, 3) "根据提供的行数和列数显示数组
arr(1, 2) = "我改一下试试""你可以随时修改数组内指定位置的数据
MsgBox arr(1, 2)
End Sub

总结:二维是由行和列表示的数组,如 ARR(3,2)表示数组中第3排第2列的元素。而一维数组只是由一个元素决定,如ARR(4)表示数组中第4个元素

静态和动态数组

到目前为止,本章介绍的都是静态数组。静态数组是具有确定大小的数组。当你事先知道数组的大小时使用静态数组。静态数组的大小是在数组的声明语句里确定的,例如,语句 DimFruits(10)AsString 声明了一个由10个成员组成的叫做 Fruits 的静态数组。

但是,万一你不肯定你的数组会包含多少个成员呢?如果你的过程由用户输入决定,每次程序执行时,用户提供的成员数可能会变化的。你如果确保你声明的数组不会浪费内存呢?

回想你声明了一个数组后,VBA 会留出足够的内存来储存数组。如果你声明一个比你需要的更多成员的数组的话,你将浪费计算机资源。这个问题的解决方法是让你的数组变为动态的。动态数组是大小可以改变的数组。如果数组的大小每次都由程序运行而决定的话,就使用动态数组。

1.  在当前工程里插入一个新模块并且重新命名为 DynamicArrays
2.  输入下列过程 DynArray:
Sub DynArray( )
Dim counter As Integer
"declare a dynamic array
Dim myArray( ) As Integer
"specify the initial size of the array
Redim myArray(5)
Workbooks.Add
"populate myArray with values
For counter = 1 to 5
myArray(counter) = counter +1
ActiveCell.Offset(counter-1, 0).Value = myArray(counter)
Next
"change the size of myArray to hold 10 elements
Redim Preserve myArray(10)
"add new values to myArray
For counter = 6 To 10
myArray(counter) = counter * counter
With ActiveCell.Offset(counter-1, 0)
.Value = myArray(counter)
.Font.Bold = TrueEnd with
Next counter
End Sub
3.  将你的 Excel 窗口和 VB 编辑器窗口并排显示
4.  逐步运行过程 DynArray。你可以将鼠标置于代码中间,并且按下F8来执行逐条语句。程序
DynArray 的结果如下图所示。

图7-3 显示10个数据的数组

在过程 DynArray 里,Dim myArray() As Integer 语句声明了一个叫做 myArray 的动态数组。尽管该语句声明了数组,但是,没有分配任何内存给该数组。第一条 ReDim 语句明确了 myArray 的开始大小并且占据了10个字节的内存让它储存5个成员,正如你所知,每个整型数据需要两个字节的内存。

语句 Workbooks.Add 打开一新工作簿,然后 For…Next 循环用数据填充数组 myArray 并且将数组的成员写入工作表。在循环开始之前,变量 counter 等于1。循环里的第一条语句:
myArray(counter) = counter + 1
分配数值2给 myArray 的第一个成员。第二条语句:
ActiveCell.Offset(counter-1, 0).Value = myArray(counter)
将 myArray 成员的值输入到当前单元格里。当前单元格为A1。因为变量 counter 等于1,所以上面的语句就等于:
ActiveCell.Offset(1-1, 0).Value = myArray(1)
或者
ActiveCell.Offset(0,0).Value = myArray(1)
上面的语句在单元格A1里输入数据。循环里面的语句被执行5次。VB在合适的工作表单元格里马输入数据并且进行到下一语句:
ReDim Preserve myArray(10)
通常,当你改变一个数组的大小时,你将失去该数组原来的所有数据。语句 ReDim 将数组重新初始化。然而,你可以将新成员加入到现存的数组里去,通过在语句 ReDim 后面带上关键字 Preserve。换句话说,关键字 Preserve 保证重新改变大小的数组不会弄丢现有的数据。如果你忽略它,新数组将会
是空的。

第二个 For…Next 循环给数组 myArray 的第六,第七,第八,第九和第十个成员赋值。这次,数组成员的数值是相乘的:counter * counter。VB使用粗体将数组其它的数值输入到合适的工作表的单元格里面。

技巧:确定数组大小
在使用数组之前,必须在 Dim 或 ReDim 语句里确定数组的大小。这意味着你不可以给数组成员赋值,直到你使用 Dim 或者 ReDim 语句声明了该数组。


阅读全文
以上是58编程为你收集整理的vba二维数组的基础介绍是什么 VBA二维数组的基础介绍全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 58编程 58biancheng.com 版权所有 联系我们
桂ICP备12005667号-32 Powered by CMS