powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Почему не получается обойти двумерный массив в цикле ?
8 сообщений из 8, страница 1 из 1
Почему не получается обойти двумерный массив в цикле ?
    #39161258
YanMalyakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем ,подскажите плиз почему не получается обойти массив

Range("МойМассив") в процедуре состоит
из диапазона А1:D7



Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
Sub Тест()
'
Dim val1 As Long
Dim Str, kol As Long

Dim MyArr() As Variant

MyArr = Range("МойМассив")
  
////обходим строки  
For Str = LBound(MyArr) To UBound(MyArr)
     //пытаюсь обойти колонки
    For kol = LBound(MyArr) To To UBound(MyArr)
 /////понимаю что тут должно быть обращение к MyArr(1,kol ) но такой варинт.не работает
     
     val1 = MyArr(Str, kol)
     
     Next
Next

   
End Sub


//////////////////////так работает

Sub Тест()
'
Dim val1 As Long
Dim Str, kol As Long

Dim MyArr() As Variant

MyArr = Range("МойМассив")
     
For Str = LBound(MyArr) To UBound(MyArr)
     
    For kol = LBound(MyArr) To Range("МойМассив").Columns.Count
     
     val1 = MyArr(Str, kol)
     
     Next
Next

   
End Sub


////////////////////////////////   И так тоже работает


For Str = LBound(MyArr) To UBound(MyArr)
     
    For kol = LBound(MyArr) To 4
     
     val1 = MyArr(Str, kol)
     
     Next
Next


Модератор: Учимся использовать тэги оформления кода - FAQ
...
Рейтинг: 0 / 0
Почему не получается обойти двумерный массив в цикле ?
    #39161279
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лично я не уловил суть. Описания типа:YanMalyakovне получаетсяYanMalyakov
Код: vbnet
1.
не работает

недостаточно информативны, чтобы определить, что же у вас случилось.
...
Рейтинг: 0 / 0
Почему не получается обойти двумерный массив в цикле ?
    #39161285
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, дошло, читаем хелп:

F1UBound returns the following values for an array with these dimensions:

Код: vbnet
1.
Dim A(1 To 100, 0 To 3, -3 To 4)



Statement Return Value UBound(A, 1) 100 UBound(A, 2) 3 UBound(A, 3) 4
...
Рейтинг: 0 / 0
Почему не получается обойти двумерный массив в цикле ?
    #39161286
YanMalyakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProЛично я не уловил суть. Описания типа:YanMalyakovне получаетсяYanMalyakov
Код: vbnet
1.
не работает

недостаточно информативны, чтобы определить, что же у вас случилось.



Вот таким образом НЕ работает,когда второй вложенный цикл не видит второе измерение массива


////обходим строки
For Str = LBound(MyArr) To UBound(MyArr)
//пытаюсь обойти колонки
For kol = LBound(MyArr) To To UBound(MyArr)
/////понимаю что тут должно быть обращение к MyArr(1,kol ) но такой варинт.не работает

val1 = MyArr(Str, kol)

Next
Next
...
Рейтинг: 0 / 0
Почему не получается обойти двумерный массив в цикле ?
    #39161290
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выше ответил.
Еще раз прошу освоить тэги оформления кода
...
Рейтинг: 0 / 0
Почему не получается обойти двумерный массив в цикле ?
    #39161303
YanMalyakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProА, дошло, читаем хелп:

F1UBound returns the following values for an array with these dimensions:

Код: vbnet
1.
Dim A(1 To 100, 0 To 3, -3 To 4)



Statement Return Value UBound(A, 1) 100 UBound(A, 2) 3 UBound(A, 3) 4



Спасибо Shocker.Pro!!!

был не внимателен к хелпу.
...
Рейтинг: 0 / 0
Почему не получается обойти двумерный массив в цикле ?
    #39161319
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем копировать Range в массив, и потом организовывать циклы, когда можно перебирать клеточки непосредственно Range итератором ForEach?
...
Рейтинг: 0 / 0
Почему не получается обойти двумерный массив в цикле ?
    #39161321
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaА зачем копировать Range в массив, и потом организовывать циклы, когда можно перебирать клеточки непосредственно Range итератором ForEach?ну вообще, так будет сильно быстрее )
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Почему не получается обойти двумерный массив в цикле ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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