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

Вход

Регистрация

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

 

= Мир MS Excel/Как присвоить массиву аргумент пользовательской фунцкции - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как присвоить массиву аргумент пользовательской фунцкции (Макросы/Sub)
Как присвоить массиву аргумент пользовательской фунцкции
Bamboo Дата: Воскресенье, 27.03.2016, 18:51 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 56
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Имеется пользовательская функция, аргумент которой ссылается на диапазон ячеек. Как значения ячеек этого диапазона присвоит массиву?
Сокращенный код:[vba]
Код

Function HighLevACC(DistMapKey)
Dim vX As Integer
Dim Array_DistMapKey() As Variant
vX = DistMapKey.Count
ReDim Array_DistMapKey(1 To vX)
Array_DistMapKey = DistMapKey.Value
MsgBox Array_DistMapKey(1)
End Function
[/vba]

Выдает ошибку когда код обращается к элементу массива: Subscrip out of range (предпоследняя строка кода)
При этом после присвоения массиву диапазона (3-я снизу строка кода), происходит изменение размера массива. Проверял через Lbound и Ubound.


Сообщение отредактировал Bamboo - Воскресенье, 27.03.2016, 18:52
 
Ответить
СообщениеИмеется пользовательская функция, аргумент которой ссылается на диапазон ячеек. Как значения ячеек этого диапазона присвоит массиву?
Сокращенный код:[vba]
Код

Function HighLevACC(DistMapKey)
Dim vX As Integer
Dim Array_DistMapKey() As Variant
vX = DistMapKey.Count
ReDim Array_DistMapKey(1 To vX)
Array_DistMapKey = DistMapKey.Value
MsgBox Array_DistMapKey(1)
End Function
[/vba]

Выдает ошибку когда код обращается к элементу массива: Subscrip out of range (предпоследняя строка кода)
При этом после присвоения массиву диапазона (3-я снизу строка кода), происходит изменение размера массива. Проверял через Lbound и Ubound.

Автор - Bamboo
Дата добавления - 27.03.2016 в 18:51
_Boroda_ Дата: Воскресенье, 27.03.2016, 19:01 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 9381
Репутация: 3951 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А если так?
[vba]
Код
MsgBox Array_DistMapKey(1, 1)
[/vba]
[p.s.]В код не вникал


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА если так?
[vba]
Код
MsgBox Array_DistMapKey(1, 1)
[/vba]
[p.s.]В код не вникал

Автор - _Boroda_
Дата добавления - 27.03.2016 в 19:01
Bamboo Дата: Воскресенье, 27.03.2016, 19:04 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 56
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
_Boroda_, Массив одномерный, а диапазон - столбец.
 
Ответить
Сообщение_Boroda_, Массив одномерный, а диапазон - столбец.

Автор - Bamboo
Дата добавления - 27.03.2016 в 19:04
KuklP Дата: Воскресенье, 27.03.2016, 19:07 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 2006
Репутация: 436 ±
Замечаний: 20% ±

Это Вы так думаете. Посмотрите в отладчике. С листа все массивы двумерные. И redim затирается следующим присвоением, а посему не имеет смысла.


Ну, с НДС и мы чего-то стoим! kuklp@mail.ru
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Воскресенье, 27.03.2016, 19:09
 
Ответить
СообщениеЭто Вы так думаете. Посмотрите в отладчике. С листа все массивы двумерные. И redim затирается следующим присвоением, а посему не имеет смысла.

Автор - KuklP
Дата добавления - 27.03.2016 в 19:07
Bamboo Дата: Воскресенье, 27.03.2016, 19:56 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 56
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
KuklP, Спасибо! Сам бы никогда не додумался!
А Redim, я так понимаю не имеет смысла? Его можно из кода убрать?
 
Ответить
СообщениеKuklP, Спасибо! Сам бы никогда не додумался!
А Redim, я так понимаю не имеет смысла? Его можно из кода убрать?

Автор - Bamboo
Дата добавления - 27.03.2016 в 19:56
KuklP Дата: Воскресенье, 27.03.2016, 19:57 | Сообщение № 6
Группа: Проверенные
Ранг: Старожил
Сообщений: 2006
Репутация: 436 ±
Замечаний: 20% ±

Нужно.


Ну, с НДС и мы чего-то стoим! kuklp@mail.ru
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеНужно.

Автор - KuklP
Дата добавления - 27.03.2016 в 19:57
_Boroda_ Дата: Понедельник, 28.03.2016, 01:32 | Сообщение № 7
Группа: Модераторы
Ранг: Экселист
Сообщений: 9381
Репутация: 3951 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Так это
MsgBox Array_DistMapKey(1, 1)

помогло?


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак это
MsgBox Array_DistMapKey(1, 1)

помогло?

Автор - _Boroda_
Дата добавления - 28.03.2016 в 01:32
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как присвоить массиву аргумент пользовательской фунцкции (Макросы/Sub)
Страница 1 из 11
Поиск:

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