这几天在研究直接通过单元格区域给数组赋值,有些很玄的东西真是搞不懂。特求教于高手。
Sub test2()
Dim myData()
Dim MyRange As Range
Dim i As Integer
Set MyRange = Range("A1:A27")
ReDim myData(1 To 27)
'myData() = MyRange.Value
For i = 1 To 27
myData(i) = Cells(i, 1).Value
Next
Range("C1:C27").Value = myData()
For i = 1 To 27
Cells(i, 5) = myData(i)
Next
End Sub
在test2过程里面假设A1:A27单元格里面为1到27的数字,如果这样给数组赋值:
myData() = MyRange.Value
那么,数组可以用以下方式输出:
Range("C1:C27").Value = myData() ’C列得到1到27
但是,不可以按下述方式输出,出现下标越界的错误:
For i = 1 To 27
Cells(i, 5) = myData(i)
Next
为什么??
如果以下述方法给数组赋值:
For i = 1 To 27
myData(i) = Cells(i, 1).Value
Next
那么,用下述语句输出数组时,只能得到第一个值1
Range("C1:C27").Value = myData() ’C列全是1
但是可以用下面的方式得到1到27的结果:
For i = 1 To 27
Cells(i, 5) = myData(i)
Next
为什么???
Sub test3()
Dim myData()
Dim MyRange As Range
Dim i As Integer
Set MyRange = Range("A1:B27")
ReDim myData(1 To 27, 1 To 2)
myData() = MyRange.Value
For i = 1 To 27
myData(i, 1) = Cells(i, 1).Value
myData(i, 2) = Cells(i, 2).Value
Next
‘Range("C1:D27").Value = myData()
For i = 1 To 27
Cells(i, 7) = myData(i, 1)
Cells(i, 8) = myData(i, 2)
Next i
End Sub
对于二维数组,好像没有上面奇怪的问题。 |