Статьи из блога

Макрос изменения цвета заглавных букв в тексте

На форуме ru-board.com интересовались, как написать макрос, который бы в выделенной области менял цвет всех заглавных букв текста на красный, а строчных на черный.

 

Вот небольшой макрос, который решает этот вопрос:

Sub colorCase3()
'Применение к первым заглавным буквам красного цвета, а к строчным - черного цвета
Dim fChar As Range
Dim selText As Range
Set selText = Selection.Range
If Selection.Type = wdSelectionIP Then
   MsgBox "Не выделен текст"
Else
   For Each fChar In selText.Words
      fChar.Font.Color = wdColorBlack
         If fChar.Characters.First Like "[A-ЯA-Z]" Then
            fChar.Characters.First.Font.Color = wdColorRed
         End If
   Next fChar
End If
End Sub

 

Выделите текст и примените этот макрос.

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

Еще записи по вопросам использования Microsoft Word:

Комментариев: 6

  1. Ольга
    13.12.2007 в 22:50 | #1

    Sub colorAllBig()
    Dim fChar As Range
    Dim seltext As Range
    Dim i As Long
    Set seltext = Selection.Range
    If Selection.Type = wdSelectionIP Then
        MsgBox "А текст какой?"
    Else
        For Each fChar In seltext.Words
                For i = 1 To fChar.Characters.Count
                    If fChar.Characters(i).Case = wdUpperCase Then
                        fChar.Characters(i).Font.Color = wdColorRed
                        Else
                        fChar.Characters(i).Font.Color = wdColorBlack
                    End If
                Next i
        Next fChar
    End If
    End Sub

  2. 13.12.2007 в 23:18 | #2

    Ольга, спасибо. Все отлично работает.

  3. Андрей
    07.01.2008 в 00:38 | #3

    Благодарю вас. Пригодится в работе.

  4. Александр
    09.04.2009 в 16:00 | #4

    а если необходимо изменить цвет текста в таблице ( к примеру .Tables(1) ) как это реализовать

    пробовал .Tables(1).cell(1,1).range.font.color не работает. кто знает как это делается ?

  5. 09.04.2009 в 16:30 | #5

    Почему не работает? Все работает. Только что эту строку набрал в окне Immediate и получил зеленый цвет в первой ячейке.

    ActiveDocument.Tables(1).Cell(1,1).Range.Font.Color=wdColorBrightGreen

  6. 09.04.2009 в 16:59 | #6

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

    'Изменение цвета букв в зависимости от регистра.
    Sub RepaintLetters()
      If Selection.Type = wdNoSelection Then Exit Sub
      With Selection.Range.Find
        .ClearFormatting: .Replacement.ClearFormatting
        .Text = "[a-zа-яё]{1;}": .MatchWildcards = True
        .Replacement.Text = "^&": .Replacement.Font.Color = wdColorAutomatic
        .Execute Replace:=wdReplaceAll
      End With
      With Selection.Range.Find
        .ClearFormatting: .Replacement.ClearFormatting
        .Text = "[A-ZА-ЯЁ]{1;}": .MatchWildcards = True
        .Replacement.Text = "^&": .Replacement.Font.Color = wdColorAutomatic
        .Execute Replace:=wdReplaceAll
      End With
    End Sub

Оставьте комментарий!

(обязательно)

^ Наверх