Categories: VBA 语言教程

VBA的5个内置数组函数

Array函数

Array函数允许你在代码执行中间创建一个数组,而不必事先确定其大小。该函数总是返回一个Varant数组。使用函数Array你可以快速地将一系列数据放置在一个清单里面。下面的过程CarInfo创建了一个叫做auto的固定大小,一维的三个成员的数组。
1.  在当前工程里插入一新模块,重命名为Array_Function
2.  输入下列过程CarInfo:
Option Base 1
Sub CarInfo()
Dim auto As Variant
auto = Array("Ford", "Black", "1999")
MsgBox auto(2) & " " & auto(1) & ", " & auto(3)
auto(2) = "4-door"
MsgBox auto(2) & " " & auto(1) & ", " & auto(3)
End Sub

另外一个例子,示范如何使用Array函数将列标输入到工作表里:

Sub ColumnHeads()Dim heading As VariantDim cell As RangeDim i As Integeri = 1heading = Array("First Name", "Last Name", "Position", _"Salary")Workbooks.AddFor Each cell in Range("A1:D1")cell.Formula = heading(i)i = i+1NextColumns("A:D").SelectSelection.Columns.AutoFitRange("A1").SelectEnd Sub

IsArray函数

Sub IsThisArray()declare a dynamic array 声明一动态数组Dim sheetNames() As StringDim totalSheets As IntegerDim counter As Integercount the sheets in the current workbook 计数当前工作簿里的工作表数目totalSheets = ActiveWorkbook.Sheets.Countspecify the size of the array 明确数组大小ReDim sheetNames(1 To totalSheets)enter and show the names of sheets 输入和显示工作表名称For counter = 1 to totalSheetssheetNames(counter) = ActiveWorkbook.Sheets(counter).NameMsgBox sheetNames(counter)Next countercheck if this is indeed an array 检查它是否确实为数组If IsArray(sheetNames) ThenMsgBox "The sheetNames is an array."End IfEnd Sub

Erase函数

当你要清除数组里的数据时,应该使用Erase函数。该函数删除静态或动态数组储存的所有数据,另外,对于动态数组,Erase函数将重新分配原来分配给该数组的所有内存。下面的例子教你如何删除数组cities里的数据。
1.  在当前工程里插入一新模块,重命名为Erase_Function
2.  输入如下过程FunCities:
 start indexing array elements at 1
Option Base 1
Sub FunCities()
declare the array
Dim cities(1 to 5) As String
assign the values to array elements
cities(1) = "Las Vegas"
cities(2) = "Orlando"
cities(3) = "Atlantic City"
cities(4) = "New York"
cities(5) = "San Francisco"
display the list of cities
MsgBox cities(1) & Chr(13) & cities(2) & Chr(13) _
& cities(3) & Chr(13) & cities(4) & Chr(13) _
& cities (5)
Erase cities
show all that was erased
MsgBox cities(1) & Chr(13) & cities(2) & Chr(13) _
& cities(3) & Chr(13) & cities(4) & Chr(13) _
& cities (5)
End Sub

在函数Erase清除数组里的数据后,函数MsgBox就显示一个空信息框了。

LBound函数和UBound函数

LBound函数和UBound函数分别返回表明数组的下界和上界的数字。
1.  在当前工程里插入模块,命名为L_and_UBound_Function
2.  输入如下代码FunCities2:
Sub FunCities2()
declare the array
Dim cities(1 to 5) As String
assign the values to array elements
cities(1) = "Las Vegas"
cities(2) = "Orlando"
cities(3) = "Atlantic City"
cities(4) = "New York"
cities(5) = "San Francisco"
display the list of cities
MsgBox cities(1) & Chr(13) & cities(2) & Chr(13) _
& cities(3) & Chr(13) & cities(4) & Chr(13) _
& cities (5)
display the array bounds
MsgBox "The lower bound: " & LBound(cities) & Chr(13) _
& "The upper bound: " & UBound(cities)
End Sub

当你要确定一个二维数组的上下界时,你就必须明确维数:1表示第一维,2表示第二维。在本章早先时候将的Exchange过程里的后面加上如下语句,可以确定该二维数组的上下界(将下列代码加入到关键字End Sub之前):

MsgBox "The lower bound (first dimension) is " _& LBound(Ex, 1) & "."MsgBox " The upper bound(first dimension) is " _& UBound(Ex, 1) & "."MsgBox "The lower bound (second dimension) is " _& LBound(Ex, 2) & "."MsgBox " The upper bound(second dimension) is " _& UBound(Ex, 2) & "."

admin

这个人很懒,什么都没有留下~

Share
Published by
admin

Recent Posts

vue:页面注入js修改input值

一般会直接这样写: let z…

6 小时 ago

聊聊vue3中的defineProps

在Vue 3中,defineP…

1 周 ago

在 Chrome 中删除、允许和管理 Cookie

您可以选择删除现有 Cooki…

2 周 ago

自定义指令:聊聊vue中的自定义指令应用法则

今天我们来聊聊vue中的自定义…

3 周 ago

聊聊Vue中@click.stop和@click.prevent

一起来学下聊聊Vue中@cli…

4 周 ago

Nginx 基本操作:启动、停止、重启命令。

我们来学习Nginx基础操作:…

1 月 ago