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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2016, 15:03   #1
linguist
Пользователь
 
Регистрация: 08.06.2016
Сообщений: 24
По умолчанию Замена слов определенного цвета в ячейках

Добрый день.

Подскажите, как можно реализовать такую функцию:

В ячейке есть текст разного цвета: красный, зеленый, черный. Нужно сделать макрос, который будет заменять пробелы между словами красного и зеленого цвета на "_".

Например, исходный вариант:
В этой ячейке есть слова разного цвета, нужно заменять пробелы между ними.

После обработки макросом:
В этой ячейке_есть_слова разного цвета, нужно_заменять пробелы между ними.

Пробовал записать макрос замены, но так работает только если в ячейке изначально был только один цвет, если добавить слова с другим цветом, то будет заменять всё на один цвет:

Код:
    Columns("L:L").Select
    Range("L2").Activate
    With Application.FindFormat.Font
        .Superscript = False
        .Subscript = False
        .Color = 37632
        .TintAndShade = 0
    End With
    Selection.Replace What:=" ", Replacement:="_", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=True, _
        ReplaceFormat:=True
   
    Columns("L:L").Select
    Range("L2").Activate
    With Application.FindFormat.Font
        .Superscript = False
        .Subscript = False
        .Color = 255
        .TintAndShade = 0
    End With
    Selection.Replace What:=" ", Replacement:="_", LookAt:=xlPart, _
         SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=True, _
         ReplaceFormat:=True
linguist вне форума Ответить с цитированием
Старый 27.06.2016, 15:42   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

макросы делают не то, что Вы задумали а то, что в макросе написали...

замените в ячейке цвет 1 (любого) символа. запишите свои действия макрорекордером, изучайте записанный макрос
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 27.06.2016, 22:29   #3
svsh2016
Форумчанин
 
Регистрация: 16.06.2015
Сообщений: 100
По умолчанию

добрый вечер,linguist,вариант макроса для красного цвета,кнопки
color и повтор

Код:
Sub color()
        With Range("A1")
          For i = 1 To .Characters.Count
               With .Characters(Start:=i, Length:=1)
                   If .Font.color = 255 And .Text = " " Then .Text = "_"
               End With
          Next
        End With
End Sub
Вложения
Тип файла: xls example_27_06_2016_prog_1.xls (41.5 Кб, 17 просмотров)
svsh2016 вне форума Ответить с цитированием
Старый 27.06.2016, 22:53   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

В условии не написано что пробелы тоже имеют такой же цвет.
И по условиям нужно анализировать цвет всех символов слова - ведь могут быть и разноцветные слова, раз это жёстко не оговорено
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 27.06.2016 в 23:12.
Hugo121 вне форума Ответить с цитированием
Старый 27.06.2016, 23:05   #5
svsh2016
Форумчанин
 
Регистрация: 16.06.2015
Сообщений: 100
По умолчанию

добавил кнопки color1 color2,а макрос use меняет все соответствующие
пробелы на знак подчеркивания.файл-пример сделал копированием фрагмента из сообщения создателя темы
Вложения
Тип файла: xls example_27_06_2016_prog_2.xls (45.0 Кб, 14 просмотров)
svsh2016 вне форума Ответить с цитированием
Старый 27.06.2016, 23:09   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Так значит это вот откуда в примере не всегда пробелы между словами...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 27.06.2016, 23:10   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а пробелы

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

не такого же цвета как и слова, которые они разделяют?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 27.06.2016, 23:43   #8
svsh2016
Форумчанин
 
Регистрация: 16.06.2015
Сообщений: 100
По умолчанию

добрый вечер,IgorGo,в теме создателя нет файл-примера,
скопировал Ваш фрагмент в ячейку A2,макрос use1
меняет все нужные пробелы на знак подчеркивания.

Код:
Sub use1()
With Range("A2")
          For i = 1 To .Characters.Count
               With .Characters(Start:=i, Length:=1)
                   If (.Font.color = 255 Or .Font.color = 32768) And .Text = " " Then .Text = "_"
               End With
          Next
        End With
End Sub
Вложения
Тип файла: xls example_27_06_2016_prog_3.xls (48.0 Кб, 17 просмотров)
svsh2016 вне форума Ответить с цитированием
Старый 27.06.2016, 23:56   #9
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Что будете делать с пробелами, которые не пробелы? Ещё навешивать OR?
Думаю пока лингвист всё не растолковал с примером всех вариантов слов и пробелов - торопиться не надо.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 28.06.2016, 11:54   #10
linguist
Пользователь
 
Регистрация: 08.06.2016
Сообщений: 24
По умолчанию

Всем спасибо за ответы.

Всегда ищем сочетания слов только зеленого или красного цвета. Остальные слова могут быть любого цвета, но мы их игнорируем. Одно слово не может быть разноцветным, т.е. в рамках одного слова все символы строго одного цвета.
Смысл такой, что если мы видим символ красного цвета, и через пробел тоже есть символ красного цвета, то между этими символами пробел меняем на подчеркивание. Аналогично с зеленым цветом. Между символами красного и зеленого цвета пробел на подчеркивание не меняется.
linguist вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск координат пикселя определенного цвета Yevgeniy_F C++ Builder 0 22.09.2013 10:30
присвоение линии определенного цвета Mehanizator Помощь студентам 2 19.08.2011 09:43
Количество пикселей определенного цвета zih Общие вопросы Delphi 4 20.10.2010 23:57
Подсчет ячеек определенного цвета в StringGrid Juliya_U Компоненты Delphi 4 22.04.2010 22:39