Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как работают массивы. Базовые понятия. - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как работают массивы. Базовые понятия. (Макросы/Sub)
Как работают массивы. Базовые понятия.
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 вывести все элементы массива?
К сообщению приложен файл: 9594347.xlsx(8Kb)


Сообщение отредактировал 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
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4602
Репутация: 925 ±
Замечаний: 0% ±

2010
Dim arr()

При получении в массив данных с листа arr нельзя объявлять массивом.

1 Нет
2 Да
3 Да, циклом по элементам массива


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Dim arr()

При получении в массив данных с листа 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
Дата добавления - 11.11.2017 в 15:28
buchlotnik Дата: Суббота, 11.11.2017, 17:12 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3325
Репутация: 886 ±
Замечаний: 0% ±

2010, 2013, 2016 RUS / ENG
moland, как у вас в коде: [vba]
Код
MsgBox arr(1)
[/vba]


каждому For - Next!
платная помощь:
ЯД: 410012595572239
buchlotnik@mail.ru
 
Ответить
Сообщениеmoland, как у вас в коде: [vba]
Код
MsgBox arr(1)
[/vba]

Автор - buchlotnik
Дата добавления - 11.11.2017 в 17:12
RAN Дата: Суббота, 11.11.2017, 17:37 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4602
Репутация: 925 ±
Замечаний: 0% ±

2010
Миш, не вводи чела в заблуждение.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеМиш, не вводи чела в заблуждение.

Автор - RAN
Дата добавления - 11.11.2017 в 17:37
buchlotnik Дата: Суббота, 11.11.2017, 18:22 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3325
Репутация: 886 ±
Замечаний: 0% ±

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]


каждому For - Next!
платная помощь:
ЯД: 410012595572239
buchlotnik@mail.ru


Сообщение отредактировал 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
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4602
Репутация: 925 ±
Замечаний: 0% ±

2010
[vba]
Код
arr = Range("A1:B2").Value
MsgBox arr(1) ????????
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
arr = Range("A1:B2").Value
MsgBox arr(1) ????????
[/vba]

Автор - RAN
Дата добавления - 11.11.2017 в 18:28
buchlotnik Дата: Суббота, 11.11.2017, 18:32 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3325
Репутация: 886 ±
Замечаний: 0% ±

2010, 2013, 2016 RUS / ENG
RAN, Андрей, чел спросил как вывести - я ответил, а то, что он перед этим ничего не присвоил - ну как бэ печаль... ты ж ему про это написал, а его только вывод интересует


каждому For - Next!
платная помощь:
ЯД: 410012595572239
buchlotnik@mail.ru
 
Ответить
СообщениеRAN, Андрей, чел спросил как вывести - я ответил, а то, что он перед этим ничего не присвоил - ну как бэ печаль... ты ж ему про это написал, а его только вывод интересует

Автор - buchlotnik
Дата добавления - 11.11.2017 в 18:32
Hugo Дата: Воскресенье, 12.11.2017, 14:18 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2693
Репутация: 601 ±
Замечаний: 0% ±

Для первого примера:
[vba]
Код
MsgBox arr(1, 1)
[/vba]
Т.к. массив двумерный!
А [vba]
Код
MsgBox arr(4, 1)
[/vba] выведет "кен"
Что есть массив - смотрите в окне Locals на паузе кода.


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069


Сообщение отредактировал Hugo - Воскресенье, 12.11.2017, 14:20
 
Ответить
СообщениеДля первого примера:
[vba]
Код
MsgBox arr(1, 1)
[/vba]
Т.к. массив двумерный!
А [vba]
Код
MsgBox arr(4, 1)
[/vba] выведет "кен"
Что есть массив - смотрите в окне Locals на паузе кода.

Автор - Hugo
Дата добавления - 12.11.2017 в 14:18
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как работают массивы. Базовые понятия. (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2017 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!