范围没有被复制到数组中

时间:2011-12-14 13:54:54

标签: vba excel-vba excel

Sub Driver()

'Highlights driver who have 1 point

Dim driverData  ' array variable to hold driver names

driverData = Range("C2:C391").Value

ReDim driverData(390)

MsgBox driverData(3)

虽然Range(“C2:C391”)在工作表中有值,但数组似乎只有空白

因此,使用MsgBox命令,只显示空白

2 个答案:

答案 0 :(得分:1)

当您仅使用ReDim时,您将修改数组中的所有内容。您需要使用ReDim Preserve来保留数组中的元素。

话虽这么说,你不能简单地将2D数组重新划分为一维数组。你可以这样做:

Sub test()

Dim driverData As Variant
Dim newArray() As String

driverData = Range("C2:C391").Value

ReDim newArray(1 To UBound(driverData, 1))
For i = 1 To UBound(driverData)
    newArray(i) = driverData(i, 1)
Next

MsgBox newArray(3)

End Sub

答案 1 :(得分:0)

你可以;

Dim driverData as Variant
driverData = Range("C2:C391")
msgbox driverData(3, 1)

(如你所知,你不能将一个Range.value分配给一个数组,即使你可以将ReDim删除它的内容)