Страницы: 1
RSS
VBA массивы
 
Задание: объявить двумерный массив размерностью 3 на 3 и заполнить его числами. Каждый элемент массива умножьте на 2. Начальный и результирующий массивы выдать в окно Immediate Window в виде двух матриц 3 на 3.  
Числа для заполнения массива берутся из ячеек.  
 
Sub mas()  
Dim mas(3, 3)  
For i = 1 To 3  
For j = 1 To 3  
mas(i, j) = Cells(i, j)  
Next j  
Next i  
Debug.Print (mas)  
For Each M In ms  
M = M * 2  
Next M  
Debug.Print (mas)  
End Sub  
 
Не могу понять, как вывести весь массив в виде матрицы через Debug.Print! Так не получается... Может по строкам как-нибудь? Подскажите, пожалуйста, заранее благодарю.
 
Только поэлементно. Можете добавить в первый цикл:  
 
For i = 1 To 3  
   For j = 1 To 3  
       mas(i, j) = Cells(i, j)  
       Debug.Print mas(i, j),  
   Next j  
   Debug.Print  
Next i
 
Чего это?  
 
For i = 1 To 3  
For j = 1 To 3  
mas(i, j) = Cells(i, j)  
Next j  
Debug.Print mas(i, 1), mas(i, 2), mas(i, 3)  
Next i
Я сам - дурнее всякого примера! ...
 
Упс, не заметил у тебя запятую:-)
Я сам - дурнее всякого примера! ...
 
Посмотрим, как на это отреагируют преподаватели ^_^  
 
Sub io()  
Dim v, x$, i As Byte  
For Each v In [A1:C3].Value
   i = i + 1: x = x & v & "|"  
   If i = 3 Then Debug.Print "|" & x: i = 0: x = ""  
Next  
End Sub
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
{quote}{login=KukLP}{date=18.10.2011 05:42}{thema=}{post}Чего это?  
 
For i = 1 To 3  
For j = 1 To 3  
mas(i, j) = Cells(i, j)  
Next j  
Debug.Print mas(i, 1), mas(i, 2), mas(i, 3)  
Next i{/post}{/quote}  
 
Спасибо, исходный массив получился ) А как это связать со второй частью цикла??
 
А так же:  
For i = 1 To 3  
For j = 1 To 3  
mas(i, j) = mas(i, j)*2  
Next j  
Debug.Print mas(i, 1), mas(i, 2), mas(i, 3)  
Next i
Я сам - дурнее всякого примера! ...
 
Так кучней вывод получается:  
Sub Myarr()  
   mas = [a1:c3]
   For i = 1 To 3  
       Debug.Print Join(Application.Index(mas, i, 0), vbTab)  
   Next i  
   Debug.Print  
   For i = 1 To 3  
       For j = 1 To 3  
           mas(i, j) = mas(i, j) * 2  
       Next j  
       Debug.Print Join(Application.Index(mas, i, 0), vbTab)  
   Next i  
   Debug.Print  
End Sub
Я сам - дурнее всякого примера! ...
 
Вывод действительно лучше, но строка Debug.Print Join(Application.Index(mas, i, 0), vbTab) непонятна )    
ну, в принципе и первое решение сойдёт )
Страницы: 1
Читают тему
Наверх