Если вы задаете вариант для диапазона рабочих листов, вы получаете двумерный массив. Тест
Sub MoveArray()
Dim myArray
myArray = Range("A1:B3").Value
Range("A6:B8").Value = myArray
End Sub
Или этот
Sub MoveArray2()
Dim myArray
Dim myArray2
Dim myRange
Dim i As Integer
Dim j As Integer
myArray = Range("A1:B3").Value
Set myRange = Range("A6:B8")
For i = 1 To myRange.Rows.Count
For j = 1 To myRange.Columns.Count
myRange.Cells(i, j) = myArray(i, j)
Next j
Next i
myArray2 = myRange
End Sub
В любом случае вариант становится массивом, а не объект диапазона и петля установить значение в диапазоне от массива.
Редактировать
Как вы можете видеть из комментариев в вопросы/ответы в этой теме диапазон не является массивом, это сложный объект, который имеет много свойств и методов. Одно из свойств (я думаю, свойство по умолчанию) - значение. Это свойство фактически представляет собой двумерный массив (или, по крайней мере, ведет себя как один) значений ячеек в диапазоне. Таким образом, если myArray также является 2-мерным aray, выполняется код myRange = myArray
. Что произойдет, так это значение ячеек, на которые ссылается диапазон, будет установлено в значениях в массиве. Диапазон относится к этим ячейкам, но это значения в ячейках, которые изменяются, а не объект диапазона.
Таким образом, если при передаче диапазона в различный набор ячеек новый набор ячеек сохраняет его значения.
С практической стороны, если вы хотите изменить значение ячеек, что диапазон referes вам может сделать это, как показано ниже:
Sub Test1()
Dim myArray(1 To 4, 1 To 1)
Dim myRange As Range
myArray(1, 1) = 1
myArray(2, 1) = 2
myArray(3, 1) = 3
myArray(4, 1) = 4
Set myRange = Range("A1:A4")
myRange = myArray
End Sub
Что находится в массиве? –
Я не думаю, что это возможно.Диапазон - это объект рабочего листа, а массив - индексированная серия значений данных с одинаковым типом. Вы можете устанавливать только объекты диапазона объектов = объекты диапазона рабочего листа. – tigeravatar
Однако стоит отметить, что у вас может быть массив объектов диапазона: 'Set myArray (0) = Range (" A1: A10 ")' и 'Set myArray (1) = Range (" C1: C10 ")' – tigeravatar