Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Выделение слов цветом в Excel 2003 - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Выделение слов цветом в Excel 2003
svoyak Дата: Пятница, 01.09.2017, 03:10 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Есть множество документов в Excel пример приложил.
Пытался сам разобраться, но так как мои познания в VBA стремятся к НУЛЮ))) ни чего не вышло.
Цель вроде не сложна: Есть список слов (который должен быть в теле макроса, чтобы применить его можно было к любому документу) список периодически дополнятся.
Так вот необходимо, что бы макрос находил по всему документу эти слова и выделял их ЦВЕТОМ - красным, только не шрифт делал красный, а именно цветовое выделение.

Есть пример кода для Word (делает тоже самое, что мне нужно и в Excel) - не знаю на сколько, он тут нужен, в общем приложил:
[vba]
Код
Sub PaintGrey()
    Dim xfind(), i&
    xfind = Array("более", "меньше", "не менее", "не более", "около") ...  и ещё порядка 100 слов
    Selection.Find.ClearFormatting
    Options.DefaultHighlightColorIndex = wdRed
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Highlight = True    ' подсветка
    For i = 0 To UBound(xfind)
        With Selection.Find
            .Text = xfind(i)    ' текст для поиска
            .Replacement.Text = xfind(i)    ' текст для замены
            .Forward = True
            .Wrap = wdFindContinue
            .Format = True
            .MatchCase = False
            .MatchWholeWord = True
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
    Next i
End Sub
[/vba]

На всякий случай, вот пока весь список слов:
("более", "менее", "не более", "не менее", "наиболее", "наименее", "меньше", "больше", "не меньше", "не больше", "ниже", "выше", "не ниже", "не выше", "не хуже", "не лучше", "должен быть", "должна быть", "должно быть", "должны быть", "не должен быть", "не должна быть", "не должно быть", "не должны быть", "должен иметь", "должна иметь", "должно иметь", "должны иметь", "не должен иметь", "не должна иметь", "не должно иметь", "не должны иметь", "должен равняться", "должна равняться", "должно равняться", "должны равняться", "не должен равняться", "не должна равняться", "не должно равняться", "не должны равняться", "должен обеспечиваться", "должна обеспечиваться", "должно обеспечиваться", "должны обеспечиваться", "не должен обеспечиваться", "не должна обеспечиваться", "не должно обеспечиваться", "не должны обеспечиваться", "возможно", "вероятно", "примерно", "возле", "либо", "может", "в основном", "и другое", "в пределах", "ориентировочно", "до", "от", "возможно", "иным", "иные", "иной", "иная", "или", "или иным", "или иные", "или иной", "или иная", "или эквивалент", "или эквивалентно", "или эквивалентное", "или эквивалентны", "или эквивалентные", "или эквивалентных", "прочий", "прочая", "прочие", "около", "расположен около", "ориентировочно", "примерно", "приближающегося", "приблизительно")

Если, кто сможет помочь, буду очень признателен!
К сообщению приложен файл: __.xls (66.0 Kb)


Сообщение отредактировал svoyak - Пятница, 01.09.2017, 03:20
 
Ответить
СообщениеЕсть множество документов в Excel пример приложил.
Пытался сам разобраться, но так как мои познания в VBA стремятся к НУЛЮ))) ни чего не вышло.
Цель вроде не сложна: Есть список слов (который должен быть в теле макроса, чтобы применить его можно было к любому документу) список периодически дополнятся.
Так вот необходимо, что бы макрос находил по всему документу эти слова и выделял их ЦВЕТОМ - красным, только не шрифт делал красный, а именно цветовое выделение.

Есть пример кода для Word (делает тоже самое, что мне нужно и в Excel) - не знаю на сколько, он тут нужен, в общем приложил:
[vba]
Код
Sub PaintGrey()
    Dim xfind(), i&
    xfind = Array("более", "меньше", "не менее", "не более", "около") ...  и ещё порядка 100 слов
    Selection.Find.ClearFormatting
    Options.DefaultHighlightColorIndex = wdRed
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Highlight = True    ' подсветка
    For i = 0 To UBound(xfind)
        With Selection.Find
            .Text = xfind(i)    ' текст для поиска
            .Replacement.Text = xfind(i)    ' текст для замены
            .Forward = True
            .Wrap = wdFindContinue
            .Format = True
            .MatchCase = False
            .MatchWholeWord = True
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
    Next i
End Sub
[/vba]

На всякий случай, вот пока весь список слов:
("более", "менее", "не более", "не менее", "наиболее", "наименее", "меньше", "больше", "не меньше", "не больше", "ниже", "выше", "не ниже", "не выше", "не хуже", "не лучше", "должен быть", "должна быть", "должно быть", "должны быть", "не должен быть", "не должна быть", "не должно быть", "не должны быть", "должен иметь", "должна иметь", "должно иметь", "должны иметь", "не должен иметь", "не должна иметь", "не должно иметь", "не должны иметь", "должен равняться", "должна равняться", "должно равняться", "должны равняться", "не должен равняться", "не должна равняться", "не должно равняться", "не должны равняться", "должен обеспечиваться", "должна обеспечиваться", "должно обеспечиваться", "должны обеспечиваться", "не должен обеспечиваться", "не должна обеспечиваться", "не должно обеспечиваться", "не должны обеспечиваться", "возможно", "вероятно", "примерно", "возле", "либо", "может", "в основном", "и другое", "в пределах", "ориентировочно", "до", "от", "возможно", "иным", "иные", "иной", "иная", "или", "или иным", "или иные", "или иной", "или иная", "или эквивалент", "или эквивалентно", "или эквивалентное", "или эквивалентны", "или эквивалентные", "или эквивалентных", "прочий", "прочая", "прочие", "около", "расположен около", "ориентировочно", "примерно", "приближающегося", "приблизительно")

Если, кто сможет помочь, буду очень признателен!

Автор - svoyak
Дата добавления - 01.09.2017 в 03:10
buchlotnik Дата: Пятница, 01.09.2017, 07:22 | Сообщение № 2
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
Цитата
именно цветовое выделение
не выйдет - в Excel оно применяется к ячейке целиком
 
Ответить
Сообщение
Цитата
именно цветовое выделение
не выйдет - в Excel оно применяется к ячейке целиком

Автор - buchlotnik
Дата добавления - 01.09.2017 в 07:22
svoyak Дата: Пятница, 01.09.2017, 09:09 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
buchlotnik, Да, наверное вы правы...
Но точно знаю, что выделение шрифтом работает!
Может подскажите тогда в этом направлении?
Найти нужные слова и допустим (поменять цвет шрифта + увеличить размер + сделать жирным и т.д. желательно всё вместе), чтобы сотрудник точно не пропустил его.
 
Ответить
Сообщениеbuchlotnik, Да, наверное вы правы...
Но точно знаю, что выделение шрифтом работает!
Может подскажите тогда в этом направлении?
Найти нужные слова и допустим (поменять цвет шрифта + увеличить размер + сделать жирным и т.д. желательно всё вместе), чтобы сотрудник точно не пропустил его.

Автор - svoyak
Дата добавления - 01.09.2017 в 09:09
Kuzmich Дата: Пятница, 01.09.2017, 11:52 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 717
Репутация: 159 ±
Замечаний: 0% ±

Excel 2003
Цитата
Найти нужные слова и допустим (поменять цвет шрифта + увеличить размер + сделать жирным и т.д. желательно всё вместе), чтобы сотрудник точно не пропустил его.

Находите слова, например с помощью регулярных выражений, и с помощью iCell.Characters меняете цвет, размер, делаете шрифт жирным и т.д.
 
Ответить
Сообщение
Цитата
Найти нужные слова и допустим (поменять цвет шрифта + увеличить размер + сделать жирным и т.д. желательно всё вместе), чтобы сотрудник точно не пропустил его.

Находите слова, например с помощью регулярных выражений, и с помощью iCell.Characters меняете цвет, размер, делаете шрифт жирным и т.д.

Автор - Kuzmich
Дата добавления - 01.09.2017 в 11:52
buchlotnik Дата: Пятница, 01.09.2017, 12:01 | Сообщение № 5
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
Как-то так навскидку


Цитата
с помощью регулярных выражений
Kuzmich, а можно поподробнее - как с помощью регулярок номер символа получить для Characters?
К сообщению приложен файл: -1-.xlsm (21.8 Kb)


Сообщение отредактировал buchlotnik - Пятница, 01.09.2017, 13:12
 
Ответить
СообщениеКак-то так навскидку


Цитата
с помощью регулярных выражений
Kuzmich, а можно поподробнее - как с помощью регулярок номер символа получить для Characters?

Автор - buchlotnik
Дата добавления - 01.09.2017 в 12:01
nilem Дата: Пятница, 01.09.2017, 18:53 | Сообщение № 6
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
так вроде тоже работает

[p.s.]Наверное, лучше использовать Instr[/p.s.]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениетак вроде тоже работает

[p.s.]Наверное, лучше использовать Instr[/p.s.]

Автор - nilem
Дата добавления - 01.09.2017 в 18:53
InExSu Дата: Воскресенье, 03.09.2017, 15:31 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 650
Репутация: 96 ±
Замечаний: 0% ±

Excel 2010, 365
слова и выделял их ЦВЕТОМ

Протёр от пыли, подкрутил.
Запустите файл svoyak Тест Словаря РаскраскИ.xlsm
Выделите ячейки. Нажимет кнопку Пуск. Выберите файл СловарьРаскраска.xlsx

[vba]
Код
Sub ЦветТекстаПоСловарю_РасКраска_InExSu()
  Dim shDC As Worksheet
  Dim iStart As Integer
  Dim rng As Range, cell As Range, sSearchString As String, lastRow&, i&
  Set shW = ActiveSheet
  Set rng = Selection
  ТочкаВозврата = rng.Address
  dicFile = Application.GetOpenFilename("Excel Workbooks (*.xls*), *.xls*", , , , False)
  Workbooks.Open Filename:=dicFile
  Set shDC = ActiveWorkbook.Worksheets("СловарьРаскраска")
  With shDC.UsedRange
    lastRow = .Row + .Rows.count - 1
  End With
  For i = 1 To lastRow
    With shDC.Range("A" & i)
      Font_Color = .Font.color
      Interior_Color = .Interior.color
    End With
    sSearchString = shDC.Range("A" & i).Value
    shW.Activate
    For Each cell In rng
      If cell Like "*" & sSearchString & "*" Then
        iStart = InStr(cell.Value, sSearchString)
        cell.Characters(Start:=iStart, Length:=Len(sSearchString)).Font.color = Font_Color
        cell.Interior.color = Interior_Color
      End If
    Next
  Next
  Range(ТочкаВозврата).Select
End Sub
[/vba]
К сообщению приложен файл: svoyak_inexsu.zip (24.5 Kb)


Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac
 
Ответить
Сообщение
слова и выделял их ЦВЕТОМ

Протёр от пыли, подкрутил.
Запустите файл svoyak Тест Словаря РаскраскИ.xlsm
Выделите ячейки. Нажимет кнопку Пуск. Выберите файл СловарьРаскраска.xlsx

[vba]
Код
Sub ЦветТекстаПоСловарю_РасКраска_InExSu()
  Dim shDC As Worksheet
  Dim iStart As Integer
  Dim rng As Range, cell As Range, sSearchString As String, lastRow&, i&
  Set shW = ActiveSheet
  Set rng = Selection
  ТочкаВозврата = rng.Address
  dicFile = Application.GetOpenFilename("Excel Workbooks (*.xls*), *.xls*", , , , False)
  Workbooks.Open Filename:=dicFile
  Set shDC = ActiveWorkbook.Worksheets("СловарьРаскраска")
  With shDC.UsedRange
    lastRow = .Row + .Rows.count - 1
  End With
  For i = 1 To lastRow
    With shDC.Range("A" & i)
      Font_Color = .Font.color
      Interior_Color = .Interior.color
    End With
    sSearchString = shDC.Range("A" & i).Value
    shW.Activate
    For Each cell In rng
      If cell Like "*" & sSearchString & "*" Then
        iStart = InStr(cell.Value, sSearchString)
        cell.Characters(Start:=iStart, Length:=Len(sSearchString)).Font.color = Font_Color
        cell.Interior.color = Interior_Color
      End If
    Next
  Next
  Range(ТочкаВозврата).Select
End Sub
[/vba]

Автор - InExSu
Дата добавления - 03.09.2017 в 15:31
svoyak Дата: Понедельник, 04.09.2017, 06:30 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Всем спасибо, выбрал для себя вариант наиболее приемлемый на данный момент.
Этот - nilem, Всё как я хотел, но не хватает увлечения размера шрифта, как в примере - buchlotnik...

buchlotnik, Этот вариант тоже хороший, но постоянно создавать 2-й лист словарь отнимает время, которого и так мало у наших менеджеров. В любом случае спасибо за помощь!

InExSu, Ваш вариант к сожалению не открывается, возможно из-за старой версии или не пойму почему... В ближайшем будущем планируем обновить софт, тогда испробую ваш вариант. Спасибо!
 
Ответить
СообщениеВсем спасибо, выбрал для себя вариант наиболее приемлемый на данный момент.
Этот - nilem, Всё как я хотел, но не хватает увлечения размера шрифта, как в примере - buchlotnik...

buchlotnik, Этот вариант тоже хороший, но постоянно создавать 2-й лист словарь отнимает время, которого и так мало у наших менеджеров. В любом случае спасибо за помощь!

InExSu, Ваш вариант к сожалению не открывается, возможно из-за старой версии или не пойму почему... В ближайшем будущем планируем обновить софт, тогда испробую ваш вариант. Спасибо!

Автор - svoyak
Дата добавления - 04.09.2017 в 06:30
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2026 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!