Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2015, 17:24   #1
TimeStopper
Пользователь
 
Регистрация: 11.09.2012
Сообщений: 44
По умолчанию Функция возвращающая массив данных на основе строки

Не знаю как ее описать более подробно...
В общем как при печати указанных листов, есть строка "5-15, 21, 22", надо получить из нее массив данных.
Кто-нибудь же сталкивался с подобным в практике, поделитесь пожалуйста. Самому мозгов не хватает написать такую.
TimeStopper вне форума Ответить с цитированием
Старый 22.02.2015, 20:11   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Function ArrayOf(ByVal ins As String, Optional outs As String)
  Dim s As String, i As Long
  s = Split(ins, ",")(0)
  For i = Val(Split(s, "-")(0)) To Val(Split(s, "-")(UBound(Split(s, "-")))): outs = outs & "," & i:  Next
  ins = Right(ins, Len(ins) - Len(s) - IIf(InStr(ins, ",") > 0, 1, 0))
  If Trim(ins) <> "" Then ArrayOf = ArrayOf(ins, outs) Else ArrayOf = Split(Right(outs, Len(outs) - 1), ",")
End Function



Function StringOf(ByVal ins As String)
  Dim s As String, i As Long
  s = Split(ins, ",")(0)
  For i = Val(Split(s, "-")(0)) To Val(Split(s, "-")(UBound(Split(s, "-")))): StringOf = StringOf & "," & i:  Next
  ins = Right(ins, Len(ins) - Len(s) - IIf(InStr(ins, ",") > 0, 1, 0))
  If Trim(ins) <> "" Then StringOf = StringOf & StringOf(ins)
End Function
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 22.02.2015, 21:19   #3
TimeStopper
Пользователь
 
Регистрация: 11.09.2012
Сообщений: 44
По умолчанию

IgorGO, научите ими пользоваться
StringOf вернул мне из строки 95-98,99,100,101 строку ,95,96,97,98,99,100,101
Здорово, а дальше что делать?
TimeStopper вне форума Ответить с цитированием
Старый 22.02.2015, 22:29   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

лента данные, текст по столбцам, разделитель запятая

а ArrayOf - возбращает массив данных, используйте как "массивную" функцию определенную пользователем
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 22.02.2015, 22:37   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

см.вложение
Вложения
Тип файла: rar СписокЧисел.rar (8.8 Кб, 7 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 22.02.2015, 22:46   #6
TimeStopper
Пользователь
 
Регистрация: 11.09.2012
Сообщений: 44
По умолчанию

а...это вы про Эксель, а мне внутри макроса нужен этот массив
Пытаюсь присвоить NomeraIzbr() = ArrayOf(kk) но упираюсь в "Can't Assign to Array".
TimeStopper вне форума Ответить с цитированием
Старый 22.02.2015, 22:52   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а так:

Код:
dim a
  a = arrayof("3-8,10,15,21-30")
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 22.02.2015, 22:58   #8
TimeStopper
Пользователь
 
Регистрация: 11.09.2012
Сообщений: 44
По умолчанию

а так упираюсь в error 13
но ошибку он уже внутри функции ищет http://clip2net.com/s/3cXhHTF
TimeStopper вне форума Ответить с цитированием
Старый 22.02.2015, 23:20   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

что-то в исходной строке не так. ни каких проверок там нет... файл дайте - посмотрю
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 22.02.2015, 23:31   #10
TimeStopper
Пользователь
 
Регистрация: 11.09.2012
Сообщений: 44
По умолчанию

смотрите функцию Function SelectLimits_my()
Вложения
Тип файла: rar Project1.rar (57.6 Кб, 7 просмотров)
TimeStopper вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция, возвращающая слово из строки Dagestan228 Visual C++ 3 16.11.2013 16:43
Функция, возвращающая массив KORT Общие вопросы Delphi 10 04.02.2013 12:41
Функция, возвращающая массив (С++) Alendorff Помощь студентам 14 09.03.2012 17:23
Пользовательская функция,возвращающая массив savraska Microsoft Office Excel 2 20.04.2010 03:12
Функция возвращающая массив babaj Общие вопросы Delphi 8 04.07.2009 17:40