Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / For Each для одного измерения массива / 8 сообщений из 8, страница 1 из 1
29.05.2018, 09:55
    #39651539
mr. Shu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
For Each для одного измерения массива
Данный цикл проходит по всем элементам двумерного массива

Код: vbnet
1.
2.
3.
For Each el In arr
    MsgBox el
Next el



можно ли сделать так, чтобы For Each сработал только для одного измерения, например вот так:
Код: vbnet
1.
2.
3.
For Each el In arr(0)
    MsgBox el
Next el
...
Рейтинг: 0 / 0
29.05.2018, 10:02
    #39651548
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
For Each для одного измерения массива
Нет. ForEach выполняет итерацию по элементам текущего контейнера. В двумерном массиве таким элементом является один элемент массива, а не "строка" элементов.
Создавайте не двумерный массив, а массив массивов - тогда будет можно.
...
Рейтинг: 0 / 0
29.05.2018, 10:22
    #39651563
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
For Each для одного измерения массива
mr. Shu,
если пишете в Excel VBA, то можно извлечь строку или столбец из массива с помощью функции ИНДЕКС. Правда, она имеет ограничения, в частности длина строк не более 255.
Код: vbnet
1.
2.
3.
  For Each el In WorksheetFunction.Index(arr, 2) 'второй столбец по счету (не по индексу)
'...
  For Each el In WorksheetFunction.Index(arr, 0, 2) 'вторая строка по счету (не по индексу)
...
Рейтинг: 0 / 0
29.05.2018, 10:25
    #39651564
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
For Each для одного измерения массива
то есть наоборот
Код: vbnet
1.
2.
3.
For Each el In WorksheetFunction.Index(arr, 2) 'вторая строка по счету (не по индексу)
'...
For Each el In WorksheetFunction.Index(arr, 0, 2) 'второй столбец по счету (не по индексу)
...
Рейтинг: 0 / 0
29.05.2018, 13:57
    #39651778
mr. Shu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
For Each для одного измерения массива
AkinaСоздавайте не двумерный массив, а массив массивов - тогда будет можно.
Я Range загоняю в массив, и дополнительно делать из него массив массивов не очень вроде идея, но за разъяснение механизмов спасибо!

Казанскийто есть наоборот
Код: vbnet
1.
2.
3.
For Each el In WorksheetFunction.Index(arr, 2) 'вторая строка по счету (не по индексу)
'...
For Each el In WorksheetFunction.Index(arr, 0, 2) 'второй столбец по счету (не по индексу)



Этот способ подошел. Спасибо!
...
Рейтинг: 0 / 0
29.05.2018, 14:13
    #39651793
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
For Each для одного измерения массива
mr. Shu,

мне вот непонятно: а почему все же нельзя использовать For ... Next? Чем он провинился? Он как раз для таких ситуаций.
...
Рейтинг: 0 / 0
30.05.2018, 06:27
    #39652165
mr. Shu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
For Each для одного измерения массива
The_Pristmr. Shu,
мне вот непонятно: а почему все же нельзя использовать For ... Next? Чем он провинился? Он как раз для таких ситуаций.

Он не провинился, я им и пользуюсь в основном. Просто пришла в голову мысль поискать альтернативу.
...
Рейтинг: 0 / 0
30.05.2018, 07:14
    #39652171
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
For Each для одного измерения массива
mr. Shuпришла в голову мысль поискать альтернативу.Для массива ForEach - хреновая альтернатива. Оно предназначено для коллекций.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / For Each для одного измерения массива / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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