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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2009, 09:31   #11
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Тогда вот так, наверное
Код:
Sub HighlightPars()

  Dim iStart As Long 'Верхняя граница диапазона поиска
  Dim oParRng As Range 'Абзац, в котором найдено первое число
  Dim bNotShaded As Boolean: bNotShaded = True
  Dim oCurrDoc As Document 'Рабочий документ
  Dim nColor As Long 'Цвет выделения
  Dim sNumber As String 'Искомое число
  
  Set oCurrDoc = ActiveDocument
  With oCurrDoc.Range(iStart, oCurrDoc.Range.End).Find
    .Text = "[0-9]{8}" 'Ищем любое число из восьми цифр
    .MatchWildcards = True 'Подстановочные знаки
    .Font.Shading.BackgroundPatternColor = wdColorAutomatic 'Без заливки
    While .Execute
      .Parent.Select
      iStart = .Parent.End 'Конец найденного слова
      nColor = GetRandomColor 'Получаем случайный цвет
      sNumber = .Parent.Text 'Найденный текст
      'Запоминаем абзац, в котором нашли номер
      Set oParRng = .Parent.Paragraphs.First.Range
      'Запускаем еще один поиск, но уже с конкретным числом
      With oCurrDoc.Range(iStart, oCurrDoc.Range.End).Find
        .Text = sNumber
        While .Execute
          'Закрашиваем первый абзац, в котором нашли номер
          If bNotShaded Then oParRng.Font.Shading.BackgroundPatternColor = nColor: bNotShaded = False
          'Закрашиваем остальные абзацы
          .Parent.Paragraphs.First.Range.Font.Shading.BackgroundPatternColor = nColor
        Wend
      End With
    Wend
  End With
End Sub

Function GetRandomColor() As Long
  Randomize
  Dim R As Byte
  Dim G As Byte
  Dim B As Byte
  
  R = Int(255 * Rnd) + 1
  G = Int(255 * Rnd) + 1
  B = Int(255 * Rnd) + 1
  
  GetRandomColor = RGB(R, G, B)
End Function
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 03.11.2009, 23:43   #12
xamillion
Форумчанин
 
Аватар для xamillion
 
Регистрация: 30.09.2008
Сообщений: 138
По умолчанию

Цитата:
Сообщение от viter.alex Посмотреть сообщение
Тогда вот так, наверное
вот именно то - что доктор прописал... спасибо за неоценимую поддержку...
xamillion вне форума Ответить с цитированием
Старый 04.11.2009, 00:36   #13
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Строчку .Parent.Select можно убрать. Это отладочная
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 04.11.2009, 21:58   #14
xamillion
Форумчанин
 
Аватар для xamillion
 
Регистрация: 30.09.2008
Сообщений: 138
По умолчанию

Цитата:
Сообщение от viter.alex Посмотреть сообщение
Строчку .Parent.Select можно убрать. Это отладочная
понял... спасибо что уделяете на недоучек время... )))
xamillion вне форума Ответить с цитированием
Старый 31.08.2010, 21:28   #15
xamillion
Форумчанин
 
Аватар для xamillion
 
Регистрация: 30.09.2008
Сообщений: 138
По умолчанию

А как бы сделать "Выделение цветом", чтобы каждый раз не заходить в "Границы и заливку" для снятия цветовой закраски?
xamillion вне форума Ответить с цитированием
Старый 01.09.2010, 01:29   #16
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Код:
Sub Макрос1()
Selection.Range.HighlightColorIndex = wdNoHighlight
End Sub
И назначить этому кнопку на панели либо клавишу (комбинацию клавиш).
Sasha_Smirnov вне форума Ответить с цитированием
Старый 01.09.2010, 08:39   #17
xamillion
Форумчанин
 
Аватар для xamillion
 
Регистрация: 30.09.2008
Сообщений: 138
По умолчанию

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

Код:
Sub HighlightPars()

  Dim iStart As Long 'Верхняя граница диапазона поиска
  Dim oParRng As Range 'Абзац, в котором найдено первое число
  Dim bNotShaded As Boolean: bNotShaded = True
  Dim oCurrDoc As Document 'Рабочий документ
  Dim nColor As Long 'Цвет выделения
  Dim sNumber As String 'Искомое число
  
  Set oCurrDoc = ActiveDocument
  With oCurrDoc.Range(iStart, oCurrDoc.Range.End).Find
    .Text = "[0-9]{8}" 'Ищем любое число из восьми цифр
    .MatchWildcards = True 'Подстановочные знаки
    .Font.Shading.BackgroundPatternColor = wdColorAutomatic 'Без заливки
    While .Execute
      .Parent.Select
      iStart = .Parent.End 'Конец найденного слова
      nColor = GetRandomColor 'Получаем случайный цвет
      sNumber = .Parent.Text 'Найденный текст
      'Запоминаем абзац, в котором нашли номер
      Set oParRng = .Parent.Paragraphs.First.Range
      'Запускаем еще один поиск, но уже с конкретным числом
      With oCurrDoc.Range(iStart, oCurrDoc.Range.End).Find
        .Text = sNumber
        While .Execute
          'Закрашиваем первый абзац, в котором нашли номер
          If bNotShaded Then oParRng.Font.Shading.BackgroundPatternColor = nColor: bNotShaded = False
          'Закрашиваем остальные абзацы
          .Parent.Paragraphs.First.Range.Font.Shading.BackgroundPatternColor = nColor
        Wend
      End With
    Wend
  End With
End Sub

Function GetRandomColor() As Long
  Randomize
  Dim R As Byte
  Dim G As Byte
  Dim B As Byte
  
  R = Int(255 * Rnd) + 1
  G = Int(255 * Rnd) + 1
  B = Int(255 * Rnd) + 1
  
  GetRandomColor = RGB(R, G, B)
End Function
xamillion вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Число в тексте с измененным цветом segail Microsoft Office Excel 8 09.12.2009 22:02
Выделение цветом определённых ячеек Bbalt Microsoft Office Excel 5 13.02.2009 12:07
Выделение цветом ratgunter Общие вопросы C/C++ 0 05.12.2008 23:22