Как изменить цвет шрифта отдельных символов в ячейке в Excel с помощью VBA - PullRequest
0 голосов
/ 26 июня 2018

У меня есть файл Excel, который мы используем для нашего списка экипажа на работе. В определенных ячейках у нас есть буквенно-цифровая информация, которую мы используем для целей учета времени. то есть CLAAO10I - использование 0, 1, I и O может использоваться в любом порядке или не использоваться вообще (могут быть все буквы или все числовые символы).

Какой код VBA я бы использовал для автоматического изменения букв I и O на красный цвет в следующих ячейках: F6, F11, F16, F21, L6, L11, L16, L21, R6, R11 и R21, чтобы помочь различать цифры 0 и 1 и буквы I и O?

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Это сделает это:

Sub makeRedSubstrings()

    Dim i As Long
    Dim cll As Range, rng As Range

    Application.ScreenUpdating = False

    ' change sheet below as required
    Set rng = Sheets("Sheet1").Range("F6,F11, F16, F21, L6, L11, L16, L21, R6, R11, R21")

    For Each cll In rng
        For i = 1 To Len(cll)
            If Mid(cll, i, 1) = "I" Or Mid(cll, i, 1) = "O" Then
                cll.Characters(Start:=i, Length:=1).Font.Color = RGB(255, 0, 0) 'red
            End If
        Next i
    Next cll

    Application.ScreenUpdating = True

End Sub
0 голосов
/ 26 июня 2018

Вы можете использовать Range.Characters(start, length) для доступа к определенному символу в ячейке и Range.Characters(start, length).Font.Color для раскраски определенного символа.

Таким образом, вам понадобится один цикл, чтобы пройти через все ячейки в данном диапазоне. И один цикл, чтобы пройти через все символы в каждой из этих ячеек и раскрасить их по мере необходимости.

Option Explicit

Public Sub ColorizeLetters()
    Dim iChar As Long

    Dim Cel As Range
    For Each Cel In Worksheets("YourSheet").Range("F6,F11,F16,F21,L6,L11,L16,L21,R6,R11,R21")
        For iChar = 1 To Cel.Characters.Count
            Select Case Cel.Characters(iChar, 1).Text
                Case "O", "I"
                    Cel.Characters(iChar, 1).Font.Color = vbRed
                Case "1", "0"
                    Cel.Characters(iChar, 1).Font.Color = vbGreen
            End Select
        Next iChar
    Next Cel
End Sub

Обратите внимание, что это работает только для константных ячеек, и вы не можете раскрасить определенные символы, если ячейка содержит формулу.

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