首页 > 解决方案 > 更改反斜杠之间部分字符串的颜色

问题描述

我遇到了这个问题:我想循环执行此特定操作的工作簿的所有工作表:在组织列中将颜色更改为最后一个反斜杠之间的字符串部分:

这是原始数据 在此处输入图像描述

这就是我想更改字符串的方式,如下所示: 在此处输入图像描述

我想改变颜色的字符串部分没有相同的长度(否则我可以用 Right 函数解决问题)。你有什么建议我可以编写一个子程序来解决这个问题吗?

标签: excelvba

解决方案


要在单元格的字符串值中操作子字符串的属性,您需要使用 Range.Characters 属性。这需要一个起点和一个长度来标识子串。

由于您需要尾随反斜杠的位置,因此在确定这些位置时,使用 InStrRev 可能比 InStr 更有效。

Sub redBetweenBackslashes()

    Dim i As Long, s As Long, e As Long, str As String

    With Worksheets("sheet4")
        For i = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row
            str = .Cells(i, "A").Value2
            e = InStrRev(str, Chr(92), -1, vbBinaryCompare) - 1
            If e > 0 Then
                s = InStrRev(str, Chr(92), e, vbBinaryCompare) + 1
                If s > 1 Then
                    With .Cells(i, "A").Characters(Start:=s, Length:=e - s + 1)
                        .Font.Color = vbRed
                        .Font.Bold = True
                    End With
                End If
            End If
        Next i
    End With

End Sub

我在红色字体颜色中添加了粗体格式。

在此处输入图像描述


推荐阅读