|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.09.2010, 12:29 | #1 |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 844
|
Работа с аргументами передоваемыми в функцию
Хочется иметь в VBA аналог функции REXX Parse, она разбирает строку в соотвествии с заданным шаблоном.
Например: есть переменная str="aaa bbb ccc ddd". То по команде: parse var str str1 str2 str3 получаем: str1="aaa"; str2="bbb"; str3="ccc ddd". Пример, конечно простейший. Аргументов может быть любое число. Есть ли аналог в VBA? Если аналогов нет, хочу написать подное, и есть ряд вопросов: * так как аргументов может любой число, то нужно определить сколько их было передано и иметь возможность обратиться к ним по номеру, так как имена так же не известны. В rexx'се это делается командами: arc() - сколько было передано аргументов; arc(n) - обращение к аргументу с номером n, как чтение так и запись. Как это сделать в VBA? * значение аргументов внутри функции будут изменены (возможно созданы новые переменные). Как передать эти изменения из функции в вызывающую программу?
С уважением, Алексей.
|
19.09.2010, 13:09 | #2 |
Форумчанин
Регистрация: 17.07.2009
Сообщений: 519
|
0) В простейших случаях может быть использована функция SPLIT.
Код:
2) Cобственно и в REXX Parse не является функцией - это оператор. Изменить в функции, переданные переменные НЕЛЬЗЯ. Это можно сделать только в процедуре-подпрограмме (sub) для аргументов, передаваемых по ссылке (ByRef). Но и этим злоупотреблять не стоит. 3) Вернуть несколько значений из функции можно: a) c помощью массива, который возвращает функция b) c помощью коллекции, которую возвращает функция Естественно, нужно предварительно подумать - что вы будете делать с результатом. Например, пройдётесь по нему в цикле For Each ... Посмотрите по парсингу строк http://www.cpearson.com/excel/splitondelimiters.aspx Последний раз редактировалось Aent; 19.09.2010 в 13:19. |
19.09.2010, 16:48 | #3 | |||
Форумчанин
Регистрация: 02.02.2009
Сообщений: 844
|
Цитата:
Не ожидал встретить здесь человека разбирающегося на хорошем уровне в rexx'се. По этому позволил себе не вдаваться в подробности, тем более что в rexx'се нет понятия функция. Цитата:
Цитата:
Спасибо за развернутый ответ!
С уважением, Алексей.
|
|||
19.09.2010, 20:20 | #4 | |
Форумчанин
Регистрация: 17.07.2009
Сообщений: 519
|
Цитата:
http://www.scoug.com/openhouse/rexxi...BIFunc1.2.html http://publib.boulder.ibm.com/infoce...p2/eyup2kn.htm "Естественным" с точки зрения MS механизмом для парсинга текста в VBA являются регулярные выражения. Посмотрите, например, http://www.tmehta.com/regexp/ и далее по ссылкам. Последний раз редактировалось Aent; 19.09.2010 в 21:00. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
smtp - сообщение об ошибке: 501, типа ошибка в синтаксисе, косяк с аргументами | Dimarik | Win Api | 5 | 10.04.2010 22:06 |
Описать функцию | Alex_193 | Помощь студентам | 1 | 15.03.2010 20:42 |
Работа: написать функцию с JOBами | dudeboy | Фриланс | 4 | 20.01.2010 21:05 |
Создать функцию | segail | Microsoft Office Excel | 5 | 26.09.2009 00:11 |