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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2010, 02:10   #1
Mike555
 
Регистрация: 09.06.2009
Сообщений: 7
По умолчанию Как заставить Vba "###" понимать не как число?

Здравствуйте! Вопрос такой: в длинном прайсе есть строки содержащие "###" и при обращении к такой строке нужно выполнять определённый код. Оператор ... Like "*###*" ... срабатывает только на трёхзначное число. Как быть? Спасибо.
Mike555 вне форума Ответить с цитированием
Старый 25.01.2010, 04:58   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Во-первых, Оператор ...Like "*###*... сработает не только на 3-х значное число, а на все строки, содержащие хотя бы 3 цифры подряд, т.к. спецсимвол "*" означает любое количество любых символов, в т.ч. и цифр. Например: "abcd1234567abcd" и т.п.
Во-вторых, пусть, например, ячейка "A1" содержит значение "aaabbb###ccc123ddd". Выполним макрос:
Код:
Sub Main(): If [A1] Like "*###*" Then [B1] = "Yes" Else [B1] = "No": End Sub
В ячейке "B1" получим "Yes". Если же в "A1" будет находиться значение "aaabbb###cccddd", то в "B1" получим "No". Что конкретно Вам нужно изменить?
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 25.01.2010, 09:45   #3
Mike555
 
Регистрация: 09.06.2009
Сообщений: 7
По умолчанию

Спасибо, что откликнулись!!!
... как обойти привязку VBA к:
? - любой символ
* - любые символы
# - любое число (0-9)
т.е. необходимо чтобы условие выполнялось при
Буржуа Docteur Glamour, г/помада###, а не
Салфетки House Lux, д/метал/хромир поверх 48023
Спасибо.
Mike555 вне форума Ответить с цитированием
Старый 25.01.2010, 10:10   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Я бы сделал так:
Код:
If InStr(1, [A1], "###", 1) > 0 Then...
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 25.01.2010, 10:16   #5
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Введите промежуточную переменную,замените на любой удобный символ,или символы ,и проверяйте его наличие

Код:
PromPerem = Replace([A1], "###", "@")


 Like "*@*"
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 25.01.2010, 12:21   #6
Mike555
 
Регистрация: 09.06.2009
Сообщений: 7
По умолчанию

Спасибо всем!!!
Действительно более логично использовать функцию InStr(вхождение одной строки в другую), а не Like(сравнение).
Искал "содержит", а нужно было "входит" - эротика
Попробую так.
Спасибо, ещё раз.
Mike555 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как можно заменять "запятая" на "Enter" Silent-cry Microsoft Office Word 4 26.01.2018 12:03
Паскаль. 2 задачи (Программа "Верификация","КАК БРИГАДИРУ РАЗДЕЛИТЬ ЗАРОБОТАННЫЕ ДЕНЬГИ") Valik102 Помощь студентам 3 20.05.2009 20:42
как превратить "визуальную" иерархию в 1 столбце в "реальную" в нескольких eto Microsoft Office Excel 4 12.03.2009 13:55
Создаю диаграмму "Bar". Подскажите как убрать растояние между "столбами" MAcK Компоненты Delphi 11 24.10.2007 10:49