3

Я нашел небольшой макрос, чтобы изменить весь текст между "[" и "]" красным в Excel. Но я не могу заставить его работать в Excel 2010, я получаю некоторые ошибки.

Может кто-нибудь помочь мне отладить это? В конце я хотел бы, чтобы в моих таблицах Excel все, что находится между "[" и "]", изменило шрифт на красный, а все, что находится вне этих критериев, все еще было черным.

Это скрипт, который я нашел на этом сайте:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Text As String
    Dim Index1 As Long
    Dim Index2 As Long
    Text = Target.Text
    Index2 = 1
    Do
        Index1 = InStr(Index2, Text, "[")
        If Index1 = 0 Then Exit Do
        Index2 = InStr(Index1, Text, "]")
        If Index2 = 0 Then Exit Do
        Target.Characters(Index1, Index2 - Index1 + 1).Font.Color = &HFF
    Loop
End Sub

2 ответа2

1

Рассматривать:

Sub ColorMeRed()
   Dim r As Range, v As String, L As Long
   Dim RedMe As Boolean, i As Long
   For Each r In ActiveSheet.UsedRange
      v = r.Text
      If InStr(v, "[") > 0 Then
         L = Len(v)
         RedMe = False
         For i = 1 To L
            If r.Characters(i, 1).Text = "[" Then
               RedMe = True
            ElseIf r.Characters(i, 1).Text = "]" Then
               RedMe = False
            Else
               If RedMe Then r.Characters(i, 1).Font.Color = vbRed
            End If
         Next i
      End If
   Next r
End Sub

Например:

0

Изменить линию

Index1 = InStr(Index2, Text, "[")

в

Index1 = InStr(Text, "[")

Первая версия пытается начать поиск с позиции Index2. Поскольку Index2 не было присвоено значение, он равен 0; но InStr считает первый символ строки символом 1. Измененная версия имеет только начало InStr в начале строки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .