Изменить цвет определенных символов в ячейке - PullRequest
7 голосов
/ 01 октября 2011

У меня есть предложение «Я бы хотел, чтобы 50 из них, пожалуйста» в ячейке A1.Я хочу, чтобы любые числовые символы красного текста (только числовые символы).Как мне это сделать?Вот структура того, что у меня есть ...

Sub RedText()

Dim i As Integer

For i = 1 To Len(Cells(1, 1).Value)
    If IsNumeric(Mid(Cells(1, 1).Value, i, 1)) = True Then
        'make the character red text
    End If
Next

End Sub

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

11 голосов
/ 01 октября 2011

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

Sub RedText()

Dim i As Long
Dim text As String

text = Cells(1, 1).Value

For i = 1 To Len(text)
    If IsNumeric(Mid$(text, i, 1)) = True Then
        Cells(1, 1).Characters(i, 1).Font.Color = vbRed
    End If
Next

End Sub
8 голосов
/ 01 октября 2011

Вы можете использовать RegExp для того же эффекта.

Преимущество подхода Regex состоит в том, что код сразу изолирует любые группы числовых символов (или пропускает любые строки, которые не имеют чисел), а не проверяет каждый отдельный символ.

Так что это дает преимущество в скорости, если вы обрабатываете достаточно большие наборы данных

Sub RegExpRed()

    Dim objRegex As Object
    Dim RegMC As Object
    Dim RegM As Object

    Set objRegex = CreateObject("vbscript.regexp")
    With objRegex
        .Global = True
        .Pattern = "\d+"
        If .test(Cells(1, 1).Value) Then
            Set RegMC = .Execute(Cells(1, 1).Value)
            For Each RegM In RegMC
                Cells(1, 1).Characters(RegM.FirstIndex + 1, RegM.Length).Font.Color = vbRed
            Next
        End If
    End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...