Страницы: 1
RSS
Присвоить диапозону значения из массива , без использования цикла
 
Как присвоить массиву значения из диапазона научили:  arr = Range("A1:B5").Value, а как наоборот?  
Если написать Range("A1:B5") = arr(), то все ячейки из диапазона примут значения первого элемента массива.
 
А поиграйтесь с Transpose(arr())/  
Ведь считывая строку в массив Вы получите одномерный "ВЕРТИКАЛЬНЫЙ", а хотите обратно в строку.
 
Упс, куда то понесло
 
Попробуем.
 
Да нет, промахнулся...  
arr = Range("A1:B5")  
arr(1 to 5, 1 to 2)  
 
и должен просто присваиваться диапазону. Главное что бы он был соразмерным..  
Sub fddf()  
Dim arr  
arr = Range("A1:B5").Value  
Range("A10:B14").Value = arr  
End Sub  
У меня работает и переносит
 
{quote}{login=}{date=19.11.2009 10:31}{thema=}{post}Да нет, промахнулся...  
arr = Range("A1:B5")  
arr(1 to 5, 1 to 2)  
 
и должен просто присваиваться диапазону. Главное что бы он был соразмерным..  
Sub fddf()  
Dim arr  
arr = Range("A1:B5").Value  
Range("A10:B14").Value = arr  
End Sub  
У меня работает и переносит{/post}{/quote}  
Здравствуйте!  
Уважаемый, вопрос от полного чайника: а чем отличается Ваш пример от:  
 
Sub fddf1()  
Range("A1:B5").Copy: Range("A10").PasteSpecial Paste:=xlPasteValues  
End Sub  
 
С ув. Vovan.
 
здравствуйте.  
пробую присвоить диапазону значение массива, как в этой теме.  
Так работает    
 
Sub cop()  
Dim arr(1 To 4)  
arr = Range("A1:A4")  
Range("b1:b4") = arr  
End Sub  
 
А так - нет. заполняется только первым элементом массива.  
 
Sub cop()  
Dim arr(1 To 4)  
For i = 1 To 4  
arr(i) = Cells(i, 1)  
Next  
Range("b1:b4") = arr  
End Sub  
 
Как правильно это осуществить?
 
Внимательно почитать тему.
Я сам - дурнее всякого примера! ...
 
Массив из диапазона листа (и обратно) должен быть двумерным. Даже если это один столбец листа.  
 
И кстати Ваш первый пример ТАК не работает.  
Работает вот так:  
 
Sub cop()  
Dim arr()  
arr = Range("A1:A4")  
Range("b1:b4") = arr  
End Sub
 
Sub cop()  
Dim arr(1 To 4, 1 To 1)  
For i = 1 To 4  
arr(i, 1) = Cells(i, 1)  
Next  
Range("b1:b4") = arr  
End Sub
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
спасибо)  
подошло и Transpose и двумерный массив)
Страницы: 1
Читают тему
Наверх