Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как заполнить Range из массива? / 10 сообщений из 10, страница 1 из 1
16.01.2008, 10:27:17
    #35064538
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заполнить Range из массива?
Как заполнить Range из массива? Уже перепробовал все:
Код: plaintext
1.
2.
3.
aArr = Array("A1", "A2", "A3", "A4")
ActiveSheet.Range("A1:A4").Value = aArr
ActiveSheet.Range("A5:A8").Value2 = aArr
Заполнаяет все cell'ы только значением "A1".

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
aArr1x4 = Array(Array("B1", "B2", "B3", "B4"))
ActiveSheet.Range("B1:B4").Value = aArr1x4
ActiveSheet.Range("B5:B8").Value2 = aArr1x4

aArr4x1 = Array(Array("C1"), Array("C2"), Array("C3"), Array("C4"))
ActiveSheet.Range("C1:C4").Value = aArr4x1
ActiveSheet.Range("C5:C8").Value2 = aArr4x1
Вообще ничего...

Стрянно как-то: из BCB && C# - без проблем, а, вот из VB - ниасилю

_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
16.01.2008, 10:43:06
    #35064611
@Nik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заполнить Range из массива?
Range("a1:a4") = Application.Transpose(aArr)
...
Рейтинг: 0 / 0
16.01.2008, 10:46:10
    #35064624
sqrk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заполнить Range из массива?
Код: plaintext
1.
2.
3.
4.
5.
6.
Dim i As Integer
aArr = Array("A1", "A2", "A3", "A4")

For i =  1  To  4 
   ActiveSheet.Range("H" & i).Value = aArr(i -  1 ) ' в массиве с нуля
Next i
...
Рейтинг: 0 / 0
16.01.2008, 10:54:08
    #35064659
@Nik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заполнить Range из массива?
Или ещё так:
Код: plaintext
1.
2.
Dim aArr( 1  To  4 ,  1  To  1 )
aArr( 1 ,  1 ) = "A1": aArr( 2 ,  1 ) = "A2": aArr( 3 ,  1 ) = "A3": aArr( 4 ,  1 ) = "A4"
Range("a1:a4") = aArr
...
Рейтинг: 0 / 0
16.01.2008, 11:06:35
    #35064707
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заполнить Range из массива?
@Nik
Application.Transpose(aArr)

Озвездеть
Вот это прыжки с переподвыпеодвертом над гибралтаром

Код: plaintext
1.
2.
aArr = Array(Array("A1", "A2", "A3", "A4"), Array("B1", "B2", "B3", "B4"), Array("C1", "C2", "C3", "C4"))
ActiveSheet.Range("A1:C4") = Application.Transpose(aArr)
Фунциклирует


Но тогда, мо, обЪясните мне, почему в том же шарпе
Код: plaintext
1.
2.
3.
4.
5.
object[,]
	values={{ 11 , 12 },{ 21 , 22 },{ 31 , 32 }};

Range1=Sheet1.GetType().InvokeMember("Range",BindingFlags.GetProperty,null,Sheet1,new object[]{"F1","G3"});
Range1.GetType().InvokeMember("Value",BindingFlags.SetProperty,null,Range1,new object[]{values});
или BCB
Код: plaintext
1.
2.
3.
Range2=Sheet2.OlePropertyGet("Range","A1:C7;E1:G7");
DataArray=VarArrayCreate(OPENARRAY(int,( 0 , 3 , 0 , 7 )),varVariant);
Range2.OlePropertySet("Value",DataArray);
все тупо работает через Value и просто массив? Неужели COM-интерфейс переплевывает по функционалу встроенные возможности?

BTW, x:\Program Files\Microsoft Office\Office\VBAXL8.HLP Transpose, вообще, и у Application, в частности, вообще не показывает

_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
16.01.2008, 11:13:36
    #35064742
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заполнить Range из массива?
sqrk
For i = 1 To 4

Гы... В цикле я и сам могу
Просто это все будет происходить на JS, по сему - не хочется вносить лишние тормоза из-за издержек COM'а. Опять же: на других языках - реализуецо ж.
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
16.01.2008, 11:30:58
    #35064804
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заполнить Range из массива?
@Nik
Или ещё так:
Код: plaintext
1.
2.
3.
Dim aArr( 1  To  4 ,  1  To  1 )
aArr( 1 ,  1 ) = "A1": aArr( 2 ,  1 ) = "A2": aArr( 3 ,  1 ) = "A3": aArr( 4 ,  1 ) = "A4"
Range("a1:a4") = aArr

А, вот, на JS - шо мертвому припарки

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
   i=new Array();
   i[ 0 ]=new Array();
   i[ 1 ]=new Array();
   i[ 2 ]=new Array();
   i[ 3 ]=new Array();
   i[ 0 ][ 0 ]='[0][0]';
   i[ 1 ][ 0 ]='[1][0]';
   i[ 2 ][ 0 ]='[2][0]';
   i[ 3 ][ 0 ]='[3][0]';
   Range=Sheet.Range("F1");
   Range.Value=i.length+"x"+i[ 0 ].length;
   Range=Sheet.Range("F2:F5");
   Range=i;

   i=new Array();
   i[ 0 ]=new Array('[0][0]','[0][1]','[0][2]','[0][3]');
   Range=Sheet.Range("K1");
   Range.Value=i.length+"x"+i[ 0 ].length;
   Range=Sheet.Range("K2:K5");
   Range=i;
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
16.01.2008, 11:58:43
    #35064921
@Nik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заполнить Range из массива?
тут не подскажу ничего.....
Разве что, или вы не перепутали строку со столбцом тут:
i[0]=new Array('[0][0]','[0][1]','[0][2]','[0][3]');
...
Рейтинг: 0 / 0
16.01.2008, 13:30:39
    #35065299
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заполнить Range из массива?
@Nik
перепутали строку со столбцом

Дык там как раз и два ж варианта: 1x4 && 4x1 - хоть какой-то ж должен сработать...
BTW, и Transpose не проконало

_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
16.01.2008, 16:53:54
    #35066106
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заполнить Range из массива?
приехали

_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как заполнить Range из массива? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]