您可以通过指定维度来初始化数组。例如
Dim myArray(10) As Integer
Dim myArray(1 to 10) As Integer
如果您正在使用数组并且这是您第一次使用,那么我建议您访问 Chip Pearson 的 WEBSITE。
这个初始化成什么?例如,如果我想将整个数组初始化为 13 怎么办?
当您想要初始化 13 个元素的数组时,您可以通过两种方式进行
Dim myArray(12) As Integer
Dim myArray(1 to 13) As Integer
首先,数组的下限以0 开头,因此您可以在数组中存储 13 个元素。例如
myArray(0) = 1
myArray(1) = 2
'
'
'
myArray(12) = 13
在第二个示例中,您将下限指定为 1,因此您的数组以 1 开头,并且可以再次存储 13 个值
myArray(1) = 1
myArray(2) = 2
'
'
'
myArray(13) = 13
如果您使用上述任何一种方法初始化数组,则数组中每个元素的值都等于0。要检查,请尝试此代码。
Sub Sample()
Dim myArray(12) As Integer
Dim i As Integer
For i = LBound(myArray) To UBound(myArray)
Debug.Print myArray(i)
Next i
End Sub
或
Sub Sample()
Dim myArray(1 to 13) As Integer
Dim i As Integer
For i = LBound(myArray) To UBound(myArray)
Debug.Print myArray(i)
Next i
End Sub
评论跟进
所以,在这个例子中,每个值都是 13。所以如果我有一个数组 Dim myArray(300) As Integer,那么所有 300 个元素的值都是 13
就像我提到的,AFAIK,没有直接的方法可以实现你想要的。话虽如此,这是一种使用工作表函数Rept 创建重复的 13 字符串的方法。一旦我们有了那个字符串,我们就可以使用SPLIT 使用"," 作为分隔符。但请注意,这会创建一个变量数组,但可以用于计算。
还请注意,在以下示例中,myArray 实际上将保存 301 个值,其中最后一个为空 - 您必须通过额外初始化此值或从 sNum 中删除最后一个“,”来解决这一问题在Split 操作之前。
Sub Sample()
Dim sNum As String
Dim i As Integer
Dim myArray
'~~> Create a string with 13 three hundred times separated by comma
'~~> 13,13,13,13...13,13 (300 times)
sNum = WorksheetFunction.Rept("13,", 300)
sNum = Left(sNum, Len(sNum) - 1)
myArray = Split(sNum, ",")
For i = LBound(myArray) To UBound(myArray)
Debug.Print myArray(i)
Next i
End Sub
在计算中使用变量数组
Sub Sample()
Dim sNum As String
Dim i As Integer
Dim myArray
'~~> Create a string with 13 three hundred times separated by comma
sNum = WorksheetFunction.Rept("13,", 300)
sNum = Left(sNum, Len(sNum) - 1)
myArray = Split(sNum, ",")
For i = LBound(myArray) To UBound(myArray)
Debug.Print Val(myArray(i)) + Val(myArray(i))
Next i
End Sub