![]() |
Выделить часть текста цветом в ячейке по шаблону на всем листе
Всем доброго вечера.
Есть интересная задача. Нужно выделить часть текста в ячейке которая запрашивается у пользователя. Как себе это вижу я: 1) спрашиваем шаблон и цвет у юзера 2) присваиваем переменной и считаем длину (дальше пригодится) 3)цикл поиска на присутствие в ячейках шаблона(не в пустых ячейках) 4)считаем какой по счету символ начинается шаблон в найденой ячейке 5)дальше выполняем окрашивание в цвет(красный) (это есть в макрорекодере) |
Цитата:
|
a_axe, часть текста поддерживается?
он красит всю ячейку, а надо только то что ищется. Только шаблон.а он может где угодно находиться в тексте ячейки. |
Цитата:
Приложите файл, который будет содержать примеры текста, соответствующие шаблоны поиска и желаемый результат. |
a_axe, пример
|
blackeangel, интересные Вы там шаблоны ищете :).
Примерно так: Скрытый текст
Код:
Option Explicit Естественно, вместо UsedRange Вы используете потребный Вам диапазон. |
Iska, спасибо, отлично работает. Только вопрос, а на больших объемах данных долго думать будет?
Ну и не хватает Цитата:
|
Цитата:
Цитата:
|
Iska, спасибо, так и сделал. Еще сделал запрос цвета для выделения.
Код:
Sub colorr() |
Цитата:
1. каждый раз вводить полное наименование цвета на мой взгляд неудобно. По хорошему можно сделать форму (одну - с текстовым окном и опциями выбора цвета), в которую вы сразу будете забивать свой поисковый шаблон и при необходимости - выбирать мышкой цвет. При вводе через input я бы ограничился вводом первой буквы: не "красный", а просто "к". Кроме того, при наличии орфографической неточности (например "краный", или "Чёрный" вместо "Черный") соответствия найдено не будет, вполне можно принудительно присвоить в этом случае цвет (например черный) и предупредить об этом пользователя. Реализовать все вышеперечисленное можно через select case: код Select case
Код:
Select Case LCase(sFontColorAsk) 2. Введенный цвет следует не проверять в обоих регистрах (If sFontColorAsk = "черный" Or sFontColorAsk = "Черный"), а перевести в заданный(например нижний) регистр: LCase(sFontColorAsk). Это ускорит работу кода. 3.при вводе цвета текста нужно вставить значение по умолчанию, чтобы сократить количество ненужных действий (например красный): код
Код:
sFontColorAsk = InputBox("Введите один из цветов: " _ Соответственно, код будет выглядеть следующим образом: код
Код:
Sub colorr2() |
a_axe,
Код:
Private Sub UserForm_Initialize() Так же через Case? |
a_axe, если интересно, то вот идея Ваша реализованная в UserForm. Получилось красиво)
|
Некрасиво.
1. Проверяйте возвращаемое значение методом .Show() и обрабатывайте только True: Код:
If .Dialogs(xlDialogEditColor).Show(…) Then Код:
Option Explicit |
Цитата:
Цитата:
Цитата:
Код:
Application.Dialogs(xlDialogEditColor).Show(20, 255, 0, 0) Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Код:
btnGetColor.BackColor = lngSelectedColor 'назначаем цвет специально выделенной кнопке |
Время: 00:33. |
Время: 00:33.
© OSzone.net 2001-