您可以通过指定维度来初始化数组。例如
Dim myArray(10) As Integer
Dim myArray(1 to 10) As Integer
如果您正在使用阵列并且这是您的第一次,那么我建议您访问 Chip Pearson 的网站。
这初始化什么?例如,如果我想将整个数组初始化为 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
using","
作为分隔符。但请注意,这会创建一个变量数组,但可以用于计算。
另请注意,在以下示例中,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