Como formatar texto entre ramificações excel usando uma macro Excel 2010

3

Encontrei uma pequena macro para alterar todo o texto entre "[" e "]" vermelho no excel. Mas eu não posso fazê-lo funcionar no Excel 2010, eu recebo alguns erros.

Alguém pode me ajudar a depurar isso? No final, desejo que nas minhas planilhas do excel tudo o que está entre "[" e "]" mude de fonte para vermelho e tudo que está fora desses critérios ainda seja preto.

Este é o script que encontrei neste site:

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
    
por Dubblej 25.05.2015 / 20:50

2 respostas

1

Considere:

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

Por exemplo:

    
por 25.05.2015 / 23:54
0

Altere a linha

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

para

Index1 = InStr(Text, "[")

A primeira versão está tentando iniciar a pesquisa na posição de Index2. Como o Index2 não teve um valor atribuído, é igual a 0; mas InStr considera o primeiro caractere da string como sendo o caractere 1. A versão alterada apenas tem InStr inicia no início da string.

    
por 25.05.2015 / 21:29