|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
04.09.2010, 00:51 | #1 |
Пользователь
Регистрация: 30.11.2009
Сообщений: 13
|
Аналог "правильного" trim() и регулярные выражения в VBA
Товарищи, если не трудно, подскажите полному чайнику, есть ли в VBA штатный аналог функции trim(), аналогичный оному в языке PHP?
Дело в том, что trim() в VBA удаляет только концевые пробелы, а символы табуляции и переносы строк игнорирует, что не есть хорошо... Нужна функция, которая бы удаляла вначале и в конце строки:
И еще один вопрос. Не получается найти, как использовать в VBA регулярные выражения для поиска и замены. Надо заменить повторяющиеся пробельные символы. Было бы удобно воспользоваться регулярным выражением: $s =~ s/\s+/ /g; ... но вместо этого приходится "городить огород" с циклом... Как-то это неправильно... А как задействовать механизм рег.выражений, никак не найду... Заранее благодарю! |
04.09.2010, 01:03 | #2 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Я только про регулярные пример приведу:
Код:
Код:
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 04.09.2010 в 01:05. |
04.09.2010, 02:54 | #3 | |
Форумчанин
Регистрация: 04.08.2009
Сообщений: 112
|
Цитата:
Код:
KL [MVP - Microsoft Office Excel]
CPU: Intel Core 2, 2.17GHz | RAM: 3.25GB (4GB) | GPU: nVidia Quadro FX 2500M OS: Windows 7 Ultimate x64 EN | MSO: 2010 Professional Plus x86 EN |
|
04.09.2010, 03:20 | #4 |
Форумчанин
Регистрация: 04.08.2009
Сообщений: 112
|
Как-то так:
Код:
KL [MVP - Microsoft Office Excel]
CPU: Intel Core 2, 2.17GHz | RAM: 3.25GB (4GB) | GPU: nVidia Quadro FX 2500M OS: Windows 7 Ultimate x64 EN | MSO: 2010 Professional Plus x86 EN Последний раз редактировалось KL (XL); 04.09.2010 в 03:22. |
04.09.2010, 19:24 | #5 |
Пользователь
Регистрация: 30.11.2009
Сообщений: 13
|
Огромное спасибо за ответы! Выручили!
Буду экспериментировать с предложенными решениями... Однако... Как-то это несерьезно, чтобы для применения регулярных выражений надо было писать свою функцию, а не использовать стандартное средство языка... Пока только плююсь на этот VBA: синтаксис совершенно непонятный, встроенный Help тоже жуток, нет регулярных выражений, и т.д. и т.п. ((( Коли уж создал тему, то хочу задать в ней же еще пару чайниковских вопросов. 1) Проверяю в цикле значения элементов массива cDbArr(). Нужно пометить всю строку голубым фоном ячеек, если было заказано оптовое (более и равно пяти) количество единиц товара. Проверяю: Код:
j – это текущий индекс элемента массива cDbArr() Далее проверяются значения в других элементах массива, например, почтовый индекс получателя (он должен состоять только из 6 цифр). Т.к. не нашел, как использовать рег.выражения, написал такое "извратное" условие для проверки, что в строке только цифры: Код:
Фон ошибочной ячейки в уже выделенной голубым цветом строке, не меняется на красный. Вся строка остается голубой. Что я делаю неправильно? 2) Второй вопрос. Как проще всего удалить почтовый индекс и город из строки с почтовым адресом, если они уже указаны в других полях этой же записи? Допустим, имеем: cDbArr(5) = "Саратов"; cDbArr(6) = "410009"; cDbArr(7) = "410009, г. Саратов, ул. Рябиновская, д.1/91."; Надо чтобы в cDbArr(7) была просто строка "ул. Рябиновская, д.1/91.". Разбивать строку на слова по пробелу или знаку препинания, переводить в нижний регистр, и сравнивать с соответствующими полями, запоминать позиции начала и конца подстроки в cDbArr(7), а затем вырезать их? Может, есть способ попроще? Заранее благодарю! |
04.09.2010, 19:42 | #6 | |
Старожил
Регистрация: 15.05.2008
Сообщений: 2,058
|
Цитата:
Просто у каждого языка свои особенности. Русский на китайский тоже не очень похож, и то что у них одним иероглифом пишется, у нас надо кучу букв написать.
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499 Последний раз редактировалось VictorM; 04.09.2010 в 19:44. |
|
04.09.2010, 20:10 | #7 | |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
Цитата:
Код:
Я думаю улица всегда присутствует. Код:
Анализ,обработка данных Недорого
Последний раз редактировалось doober; 04.09.2010 в 20:15. |
|
04.09.2010, 20:27 | #8 |
Форумчанин
Регистрация: 04.08.2009
Сообщений: 112
|
Ага, но в разных агрегатных состояниях: проспект, проезд, переулок, шоссе, площадь...
KL [MVP - Microsoft Office Excel]
CPU: Intel Core 2, 2.17GHz | RAM: 3.25GB (4GB) | GPU: nVidia Quadro FX 2500M OS: Windows 7 Ultimate x64 EN | MSO: 2010 Professional Plus x86 EN |
04.09.2010, 21:03 | #9 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
Точно,об этом и не подумал,тогда заменить на запятую и клеить 2 последнихА лучше посмотреть оригинал
Анализ,обработка данных Недорого
|
05.09.2010, 18:08 | #10 | |
Пользователь
Регистрация: 30.11.2009
Сообщений: 13
|
Цитата:
Но теперь, когда внезапно потребовался VBA, просто туплю не по-детски... Начальство орет "быстрей-быстрей!", а времени на обучение нет - приходится разрываться между своими непосредственными обязанностями сисадмина, и кучей других, совершенно "левых" вещей, типа дизайна и подготовки выставок... |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Поддерживает ли VBA регулярные выражения? | Suppir | Microsoft Office Word | 19 | 04.09.2011 00:19 |
Есть в VBA аналог "repeat until keypressed" (из Pascal) ? (-) | novak_26 | Microsoft Office Excel | 3 | 28.02.2010 19:02 |
Аналог функции "Сохранить как->Веб-страница, полностью" | beemoto | Работа с сетью в Delphi | 1 | 23.11.2009 17:12 |
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" | aleksei78 | Microsoft Office Excel | 13 | 25.08.2009 12:04 |