Как работают массивы. Базовые понятия.
moland
Дата: Суббота, 11.11.2017, 15:08 |
Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Имею такой код. Но почему он не работает? [vba]Код
Sub Raschet_Norm() Dim arr(), lr As Long lr = Worksheets(1).Cells(Worksheets(1).Rows.Count, "B").End(xlUp).Row ' Запись данных в массив. arr() = Worksheets(1).Range("A1:B" & lr).Value MsgBox arr(1) End Sub
[/vba] 1. Правильно я понимаю что создаётся одномерный динамический массив из данных в диапазоне А1:B5 в моем случае? 2. В этом массиве 10 элементов, несмотря на то что А5 - пустая ячейка? 3. Как можно в MsgBox вывести все элементы массива?
Имею такой код. Но почему он не работает? [vba]Код
Sub Raschet_Norm() Dim arr(), lr As Long lr = Worksheets(1).Cells(Worksheets(1).Rows.Count, "B").End(xlUp).Row ' Запись данных в массив. arr() = Worksheets(1).Range("A1:B" & lr).Value MsgBox arr(1) End Sub
[/vba] 1. Правильно я понимаю что создаётся одномерный динамический массив из данных в диапазоне А1:B5 в моем случае? 2. В этом массиве 10 элементов, несмотря на то что А5 - пустая ячейка? 3. Как можно в MsgBox вывести все элементы массива? moland
Сообщение отредактировал moland - Суббота, 11.11.2017, 15:09
Ответить
Сообщение Имею такой код. Но почему он не работает? [vba]Код
Sub Raschet_Norm() Dim arr(), lr As Long lr = Worksheets(1).Cells(Worksheets(1).Rows.Count, "B").End(xlUp).Row ' Запись данных в массив. arr() = Worksheets(1).Range("A1:B" & lr).Value MsgBox arr(1) End Sub
[/vba] 1. Правильно я понимаю что создаётся одномерный динамический массив из данных в диапазоне А1:B5 в моем случае? 2. В этом массиве 10 элементов, несмотря на то что А5 - пустая ячейка? 3. Как можно в MsgBox вывести все элементы массива? Автор - moland Дата добавления - 11.11.2017 в 15:08
RAN
Дата: Суббота, 11.11.2017, 15:19 |
Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
При получении в массив данных с листа arr нельзя объявлять массивом. 1 Нет 2 Да 3 Да, циклом по элементам массива
При получении в массив данных с листа arr нельзя объявлять массивом. 1 Нет 2 Да 3 Да, циклом по элементам массиваRAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение При получении в массив данных с листа arr нельзя объявлять массивом. 1 Нет 2 Да 3 Да, циклом по элементам массиваАвтор - RAN Дата добавления - 11.11.2017 в 15:19
moland
Дата: Суббота, 11.11.2017, 15:28 |
Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Как можно в MsgBox вывести 1-ый элемент моего массива?
Как можно в MsgBox вывести 1-ый элемент моего массива? moland
Ответить
Сообщение Как можно в MsgBox вывести 1-ый элемент моего массива? Автор - moland Дата добавления - 11.11.2017 в 15:28
buchlotnik
Дата: Суббота, 11.11.2017, 17:12 |
Сообщение № 4
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация:
929
±
Замечаний:
20% ±
2010, 2013, 2016 RUS / ENG
moland , как у вас в коде: [vba][/vba]
Ответить
Сообщение moland , как у вас в коде: [vba][/vba]Автор - buchlotnik Дата добавления - 11.11.2017 в 17:12
RAN
Дата: Суббота, 11.11.2017, 17:37 |
Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Миш, не вводи чела в заблуждение.
Миш, не вводи чела в заблуждение. RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение Миш, не вводи чела в заблуждение. Автор - RAN Дата добавления - 11.11.2017 в 17:37
buchlotnik
Дата: Суббота, 11.11.2017, 18:22 |
Сообщение № 6
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация:
929
±
Замечаний:
20% ±
2010, 2013, 2016 RUS / ENG
Цитата
не вводи чела в заблуждение
Чёй-то? Всё зависит от того, как он объявит или переобъявит массив: [vba]Код
Sub first() Dim arr(3) For i = 0 To 2 arr(i) = i + 1 Next MsgBox arr(0) 'первый Dim arr2(1 To 3) For i = 1 To 3 arr2(i) = i Next MsgBox arr2(1) 'тоже первый ' и Option Base 1 тоже никто не отменял End Sub
[/vba]
Цитата
не вводи чела в заблуждение
Чёй-то? Всё зависит от того, как он объявит или переобъявит массив: [vba]Код
Sub first() Dim arr(3) For i = 0 To 2 arr(i) = i + 1 Next MsgBox arr(0) 'первый Dim arr2(1 To 3) For i = 1 To 3 arr2(i) = i Next MsgBox arr2(1) 'тоже первый ' и Option Base 1 тоже никто не отменял End Sub
[/vba]buchlotnik
Сообщение отредактировал buchlotnik - Суббота, 11.11.2017, 18:24
Ответить
Сообщение Цитата
не вводи чела в заблуждение
Чёй-то? Всё зависит от того, как он объявит или переобъявит массив: [vba]Код
Sub first() Dim arr(3) For i = 0 To 2 arr(i) = i + 1 Next MsgBox arr(0) 'первый Dim arr2(1 To 3) For i = 1 To 3 arr2(i) = i Next MsgBox arr2(1) 'тоже первый ' и Option Base 1 тоже никто не отменял End Sub
[/vba]Автор - buchlotnik Дата добавления - 11.11.2017 в 18:22
RAN
Дата: Суббота, 11.11.2017, 18:28 |
Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
[vba]Код
arr = Range("A1:B2").Value MsgBox arr(1) ????????
[/vba]
[vba]Код
arr = Range("A1:B2").Value MsgBox arr(1) ????????
[/vba] RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение [vba]Код
arr = Range("A1:B2").Value MsgBox arr(1) ????????
[/vba] Автор - RAN Дата добавления - 11.11.2017 в 18:28
buchlotnik
Дата: Суббота, 11.11.2017, 18:32 |
Сообщение № 8
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация:
929
±
Замечаний:
20% ±
2010, 2013, 2016 RUS / ENG
RAN , Андрей, чел спросил как вывести - я ответил, а то, что он перед этим ничего не присвоил - ну как бэ печаль... ты ж ему про это написал, а его только вывод интересует
RAN , Андрей, чел спросил как вывести - я ответил, а то, что он перед этим ничего не присвоил - ну как бэ печаль... ты ж ему про это написал, а его только вывод интересуетbuchlotnik
Ответить
Сообщение RAN , Андрей, чел спросил как вывести - я ответил, а то, что он перед этим ничего не присвоил - ну как бэ печаль... ты ж ему про это написал, а его только вывод интересуетАвтор - buchlotnik Дата добавления - 11.11.2017 в 18:32
Hugo
Дата: Воскресенье, 12.11.2017, 14:18 |
Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3250
Репутация:
707
±
Замечаний:
0% ±
2019
Для первого примера: [vba][/vba] Т.к. массив двумерный! А [vba][/vba] выведет "кен" Что есть массив - смотрите в окне Locals на паузе кода.
Для первого примера: [vba][/vba] Т.к. массив двумерный! А [vba][/vba] выведет "кен" Что есть массив - смотрите в окне Locals на паузе кода. Hugo
excel@nxt.ru webmoney: E265281470651 Z422237915069
Сообщение отредактировал Hugo - Воскресенье, 12.11.2017, 14:20
Ответить
Сообщение Для первого примера: [vba][/vba] Т.к. массив двумерный! А [vba][/vba] выведет "кен" Что есть массив - смотрите в окне Locals на паузе кода. Автор - Hugo Дата добавления - 12.11.2017 в 14:18