Страницы: 1
RSS
Выделение любого текста цветом в выделенном диапазоне, добавить возможность выбора цвета для выделения конкретного текста
 
Добрый день!
Помогите пожалуйста решить следующую задачу:
Часто приходится  разгребать документы где очень много текта/цифр и тд...из всего это текста мне нужно определенные значения, сейчас я нахожу их с помощью след макроса:
Скрытый текст
выделяю необходимый мне диапазон, будь то строка, столбец или лист и запускаю этот макрос, ввожу ключевую фразу, которую мне необходимо выделить и он быстренько мне все делает. Но есть потребность выделять эти фразы разными цветами.. и хотелось бы иметь возможность выбора цвета(без переписки макроса ручной замены кода)

Как я это вижу:
1. выделяю нужный мне диапазон
2. вызываю макрос
3. в поле ввожу свою ключевую фразу (и вот здесь бы хотелось иметь возможность выбора цвета,по примеру как это реализовано в самом Excel, например вызов формы (во вложении))
 
Можно так, только учтите, что Ваш макрос находит, только первое вхождение  
Изменено: Msi2102 - 22.09.2021 08:12:56
 
Без формы. Стандартная палитра
Код
Sub Выделить()
   Application.ScreenUpdating = False
Dim c As Range, s$, i&, L&
s = InputBox("", "Введите слово", "")
If s = "" Then Exit Sub
L = Len(s)
    Application.Dialogs(xlDialogEditColor).Show 40, 100, 100, 200
    ColBat = ThisWorkbook.Colors(40) 'получаем выбранный код цвета
For Each c In Cells.SpecialCells(xlCellTypeConstants, xlTextValues)
   i = InStr(1, c, s, vbTextCompare)
   If i > 0 Then
       With c.Characters(i, L).Font
           .Bold = True
           .Color = ColBat 'vbBlue
       End With
   End If
Next
   Application.ScreenUpdating = True
End Sub
 
Msi2102, спасибо за помощь, как можно сделать чтобы выделял абсолютно все?

Цитата
Александр Моторин написал:
ColBat = ThisWorkbook.Colors(40) 'получаем выбранный код цвета
у меня при его запуске всегда текст красится одним цветом(бледнооранжевый), независимо от того какой я выбрал, проблема в этой строке? как сделать чтобы цвет вставал именно какой я выбираю?
Изменено: vikttur - 22.09.2021 11:00:36
 
WS27, здравствуйте
Готовые решения. Цветовая карта (ColorMap). Как выделить ячейки разными цветами по типам данных
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
WS27 написал:
как можно сделать чтобы выделял абсолютно все
Заменить макрос, примерно на такой как в файле (добавил оба варианта с формой и без, как писал Александр Моторин)
Цитата
WS27 написал:
выделяю необходимый мне диапазон
Если нужно выделенный диапазон то
Цитата
WS27 написал:
For Each c In Cells.SpecialCells(xlCellTypeConstants, xlTextValues)
Немного не подойдет
Изменено: Msi2102 - 22.09.2021 10:56:11
 
Цитата
Александр Моторин написал:
Без формы
Слишком большой диапазон цветов, если будут дальше автоматизировать, то могут быть проблемы с оттенками  :D  
 
Цитата
Msi2102 написал:
For Each c In Cells.SpecialCells(xlCellTypeConstants, xlTextValues)Немного не подойдет
а как это реализовать?
 
Цитата
WS27 написал:
а как это реализовать?
Это зависит от того какие цели Вы преследуете, как у Вас расположены данные, как Вы их выделяете (весь столбец или нет). Если данные расположены всегда в одном столбце или строке, то достаточно найти последнюю ячейку. Если Вы выделяете диапазон (не целый столбец), то можно Selection. Если для поиска выделяете целый столбец или строку, то попробуйте так:
Код
For Each cell In Application.Intersect(Selection, ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, xlTextValues))
Страницы: 1
Наверх