1

Тема: VBA: поиск и форматирование части текста ячейки в Excel

Макрос ищет в таблице Excel на текущем листе латинские символы и выделяет их красным цветом, но не всю ячейку и не всё слово, и именно латинскую букву. То есть, если встретится слово "прNвет" - покрасит букву N. Пример можно использовать и для работы с выделенным диапазоном, см. комментарии в коде.

Потребуется подключить библиотеку "Microsoft VBScript Regular Expressions", в редакторе Visual Basic меню "Tools" - "References...".

Option Explicit

Sub MyCharFormat()
    Dim objRegExp As New RegExp
    Dim objCell As Range
    Dim collMatches As MatchCollection
    Dim objMatch As Match
    
                
    With objRegExp
        .Pattern = "[a-z]"
        .IgnoreCase = True
        .MultiLine = False
        .Global = True
    End With
    
    ' Работаем со всем рабочим листом
    For Each objCell In ActiveWorkbook.ActiveSheet.UsedRange.Cells
    ' или…
    ' Работаем с выделенным диапазоном. Используем Shift и Ctrl
    ' для множественного выделения диапазона из нескольких областей.
    'For Each objCell In Application.Selection.Cells
        With objCell
            If Not (IsEmpty(.Value) Or IsNull(.Value) Or IsError(.Value)) Then
                Application.StatusBar = "Testing Cell(" & CStr(.Row) & "," & CStr(.Column) & ")…"
        
                If objRegExp.Test(.Value) Then
                    Set collMatches = objRegExp.Execute(.Value)
             
                    For Each objMatch In collMatches
                        With .Characters(objMatch.FirstIndex + 1, 1).Font
                            .ColorIndex = 3
                        End With
                    Next objMatch
                End If
            End If
        End With
    Next objCell
    
    Application.StatusBar = False
End Sub

Автор примера - alexii.

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