| 
			| 
					
						| sergvg 
								Интересующийся    Offline | 
								|  | «  : 09-06-2010 12:32 »  |  | 
 
 Прошу модераторов перенести тему в соответствующий раздел, если я выбрал его неправильно. 
 Итак, вопрос:
 как в скрипте (с расширением .vbs) проинициализировать одномерный и двумерный массивы известными заранее значениями?
 
 что-то типа:
 одномерный (1,2,3,5,6)
 двумерный ((1,2,3),(4,5,6))
 
 
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #1 : 09-06-2010 12:48 »  |  | 
 
 Dim Arr
 Arr = Array(1, 2, 3, 4, 5, 6)
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| sergvg 
								Интересующийся    Offline | 
								|  | « Ответ #2 : 10-06-2010 06:33 »  |  | 
 
 Спасибо. А почему двумерный не получается?
 ApExcel.Range("B3:C5").Value = Array(Array(1,2),Array(3,4),Array(5,6))
 
 Как двумерный сделать?
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #3 :  10-06-2010 06:49 »   |  | 
 
 sergvg, а попробовать так же как ты записал в вопросе? |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| sergvg 
								Интересующийся    Offline | 
								|  | « Ответ #4 : 10-06-2010 07:25 »  |  | 
 
 хм. Дык ведь не работает так. Где я обкосячился?  |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #5 : 10-06-2010 08:02 »  |  | 
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| sergvg 
								Интересующийся    Offline | 
								|  | « Ответ #6 : 10-06-2010 08:26 »  |  | 
 
 Беру пример Dim sales()() As Double = New Double(11)() {}Dim month As Integer
 Dim days As Integer
 For month = 0 To 11
 days = DateTime.DaysInMonth(Year(Now), month + 1)
 sales(month) = New Double(days - 1) {}
 Next month
сохраняю его в expample.vbs запускаю, получаю ошибку:  |  
						| 
								| 
 |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| baldr | 
								|  | « Ответ #7 : 10-06-2010 08:32 »  |  | 
 
 sergvg, ты уж реши, для себя, что ты пишешь - скрипт для WSH на VBScript или программу на VB.NET. Вот так работает в скрипте: Arr = Array(Array(1, 2, 3), Array(4, 5, 6)) |  
						| 
								|  |  
								|  |  Записан | 
 
 Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично |  |  | 
	| 
			| 
					
						| sergvg 
								Интересующийся    Offline | 
								|  | « Ответ #8 : 10-06-2010 08:53 »  |  | 
 
 Цитирую первый мой пост: Итак, вопрос:как в скрипте (с расширением .vbs) проинициализировать одномерный и двумерный массивы известными заранее значениями?
 
 С учётом всего вышесказанного делаю: Set ApExcel = CreateObject("Excel.application") 'Creates an objectApExcel.Visible = True ' So you can see Excel
 ApExcel.Workbooks.Add 'Adds a new book.
 Dim Arr
 Arr = Array(Array(1, 2, 3), Array(4, 5, 6))
 ApExcel.Range("B3:d4").Value = Arr
 
В итоге, запускается эксель, создаётся книга, в ней в диапазоне B3:C4 - пусто, а в диапазоне D3:D4 - "#Н/Д".  Но если определить массив двумерный так: Dim Arr(2,2)Arr(0,0)=1
 Arr(0,1)=2
 Arr(1,0)=3
 Arr(1,1)=4
 
то тогда всё работает. Но у меня нет желания указывать номера индексов для всех элементов массива. Поэтому, повторяю вопрос из первого поста: Как проинициализировать ДВУМЕРНЫЙ МАССИВ известными заранее значениями? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| baldr | 
								|  | « Ответ #9 : 10-06-2010 09:00 »  |  | 
 
 Arr = Array(Array(1, 2, 3), Array(4, 5, 6))V=Arr(1)(2) ' Здесь V=6
 Массив создается и инициализируется. Перефразируй вопрос для Excel - что он там принимает для Range? |  
						| 
								|  |  
								|  |  Записан | 
 
 Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично |  |  | 
	| 
			| 
					
						| sergvg 
								Интересующийся    Offline | 
								|  | « Ответ #10 : 10-06-2010 09:13 »  |  | 
 
 а надо, чтобы не Arr(1)(2) было 6, а Arr(1,2).  Я так понял, тут существуют понятия как многомерный массив, так и вложенные массивы. В случае с Excel нужен двумерный массив. Пример, как работает - я приводил, но там каждый элемент надо присваивать с указанием всех индексов. То есть, Arr(0,0) = 1, Arr(0,1) = 2, Arr(1,0) = 3 и т.д. 
 Из Перла в эксель передаётся как массив массивов, но в перле нет многомерных массивов.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| baldr | 
								|  | « Ответ #11 : 10-06-2010 10:17 »  |  | 
 
 sergvg, Да, действительно, не получается.. Если нужно быстрое решение - могу посоветовать только заполнять построчно   St1="1,2,3"St2="4,5,6"
 Set ApExcel = CreateObject("Excel.application") 'Creates an object
 ApExcel.Visible = True ' So you can see Excel
 ApExcel.Workbooks.Add 'Adds a new book.
 ApExcel.Range("B3:D3").Value2 = Split(St1, ",")
 ApExcel.Range("B4:D4").Value2 = Split(St2, ",")
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично |  |  | 
	| 
			| 
					
						| sergvg 
								Интересующийся    Offline | 
								|  | « Ответ #12 : 10-06-2010 10:38 »  |  | 
 
 построчно можно и так:ApExcel.Range("B3:E3").Value = Array(1,2,3,4)
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	|  |