Диапазон не копируется в массив - PullRequest
2 голосов
/ 14 декабря 2011
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, появляется только blank

Ответы [ 2 ]

1 голос
/ 14 декабря 2011

Когда вы используете просто ReDim, вы закрываете все содержимое массива. Вам нужно использовать ReDim Preserve, чтобы сохранить элементы в массиве.

При этом вы не можете просто переделать 2D-массив в 1D-массив. Вы можете сделать это:

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
0 голосов
/ 14 декабря 2011

Вы можете;

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

(Если он у вас есть, вы не можете присвоить Range.value для массива, и даже если бы вы могли, ReDim удалил бы его содержимое)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...