如何使用宏 Excel 2010 在分支之间格式化文本

如何使用宏 Excel 2010 在分支之间格式化文本

我找到了一个小宏,可以将 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

答案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

例如:

在此处输入图片描述

答案2

改变线路

Index1 = InStr(Index2,文本,“[”)

Index1 = InStr(文本,“[”)

第一个版本尝试从 Index2 的位置开始搜索。由于 Index2 尚未赋值,因此它等于 0;但 InStr 将字符串的第一个字符视为字符 1。更改后的版本只是让 InStr 从字符串的开头开始。

相关内容