Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вычислить подсторку, Хитрая ситуация 
V
    Опции темы
Тиль
Дата 22.5.2008, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 27.2.2006

Репутация: нет
Всего: нет



есть строка "ггг-05" и "ггг 05".Факт в том что после ггг может стоять или пробел или дефис. Как можно средствами VBA выделить "ггг"
--------------------
Казалось нам пипец, оказалось что не казалось
PM MAIL   Вверх
mihanik
Дата 22.5.2008, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 9
Всего: 109



Начнем с того, "ггг" - это реальные "ггг" или под этими "ггг" скрывается нечто другое?
"ггг" бывают разные...

Если это реальные "ггг", то это подстрока длиной 3 символа из начала строки
Код

Выделяется так
mid("ггг-впыомыамы",1,3)


Если же это гипотетические "ггг", то тут надо хитрее...

Код

'********************************************************************
'*
'* Функция  : strExtractString
'* Описание : Выделяет из строки подстроку, удовлетворяющую шаблону
'* Вход     : strString - строка
'*            strPath   - шаблон
'* Выход    : строка соответствущая шаблону
'*
'********************************************************************
Private Function strExtractString(ByVal strString, ByVal strPath)
Dim RegEx         ' Экземпляр регулярного выражения
Dim colMatches   ' Коллекция совпадений
Dim aMatch       ' один из совпавших образцов

' Создаём экземпляр объекта RegExp
    Set RegEx = CreateObject("VBScript.RegExp")

' Настраиваем режимы работы регулярного выражения
    RegEx.IgnoreCase = True ' Осуществляем поиск игнорируя размер букв
    RegEx.Global = False    ' Ищем до первого совпадения
    RegEx.MultiLine = False ' Текст не является многострочным
    RegEx.Pattern = strPath ' Устанавливаем шаблон регулярного выражения
  
' Тестируем строку на соответствие шаблону
    Set colMatches = RegEx.Execute(strString)
    For Each aMatch In colMatches
        strExtractString = aMatch.Value
        Exit For
    Next

' Уничтожаем экземпляры объектов
    Set colMatches = Nothing
    Set RegEx = Nothing

End Function



И тут в качестве шаблона надо использовать регулярное выражение, которое полностью описывает выделяемую строку.

Разберёшься?



--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
Тиль
Дата 22.5.2008, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 27.2.2006

Репутация: нет
Всего: нет



неа......под "ГГГ" может быть строка любой длинны, самое гланое отсечь все что стоит начиная с пробела или с тире
--------------------
Казалось нам пипец, оказалось что не казалось
PM MAIL   Вверх
mihanik
Дата 22.5.2008, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 9
Всего: 109



Цитата(Тиль @  22.5.2008,  16:21 Найти цитируемый пост)
самое гланое отсечь все что стоит начиная с пробела или с тире

А до чего?

Ну...
Например так

Код

        Resultat = strExtractString("ггг-05", "[ -]*.*$")


Ты точнее можешь сказать?

Добавлено через 55 секунд
ЗЫ.

"[ -]*.*$" - это регулярное выражение. В Инете полно про это.





--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
ama_kid
Дата 22.5.2008, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 1
Всего: 95



Тиль, как вариант:
Код
 Dim AStrings(10) As String
 AString = Split("ГГГ-05", "-", , vbTextCompare)



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Тиль
Дата 22.5.2008, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 27.2.2006

Репутация: нет
Всего: нет



дело в том что по строкам будет идти цикл и я не знаю что будет стоять после "ггг", пробел или тире, потому что будет и так и так по любому
--------------------
Казалось нам пипец, оказалось что не казалось
PM MAIL   Вверх
mihanik
Дата 22.5.2008, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 9
Всего: 109



Тиль, повторяю!!!!
Код

Resultat = strExtractString("ггг-05", "[ -]*.*$")

тут и пробел, и тире, и, если надо, какава с чаем...



--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
ama_kid
Дата 22.5.2008, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 1
Всего: 95



Цитата(Тиль @  22.5.2008,  16:45 Найти цитируемый пост)
дело в том что по строкам будет идти цикл и я не знаю что будет стоять после "ггг", пробел или тире, потому что будет и так и так по любому 
Перед вызовом Split вызываешь Replace для замены всех пробелов на тире. Далее по тексту...



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Akina
Дата 22.5.2008, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Код

strString = replace(strString, "-", " ")
strString= left(strString, instr(strString, " "))

Код

arrString = split(strString, "-")
arrString = split(arrString(0), " ")
strString = arrString(0)
Вариантов миллион...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Тиль
Дата 22.5.2008, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 27.2.2006

Репутация: нет
Всего: нет



все..нормально, разобрался.....пасибки огромные всем
--------------------
Казалось нам пипец, оказалось что не казалось
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0526 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.