Excel 在反斜杠之间更改字符串部分的颜色
我遇到了这个问题:我想在woorkbook的所有工作表中循环执行以下特定操作:将颜色更改为最后一个反斜杠之间的字符串部分,在“组织”列中: 这是原始数据 这是我希望更改字符串的方式,如下所示:Excel 在反斜杠之间更改字符串部分的颜色,excel,vba,Excel,Vba,我遇到了这个问题:我想在woorkbook的所有工作表中循环执行以下特定操作:将颜色更改为最后一个反斜杠之间的字符串部分,在“组织”列中: 这是原始数据 这是我希望更改字符串的方式,如下所示: 我想要更改颜色的字符串部分没有相同的长度(否则我可以使用正确的函数解决问题)。你有什么建议我如何编写一个子程序来解决这个问题吗 要在单元格的字符串值内操作子字符串的属性,需要使用Range.Characters属性。这需要一个起点和长度来标识子字符串 由于您需要尾部反斜杠的位置,因此在确定这些位置时,
我想要更改颜色的字符串部分没有相同的长度(否则我可以使用正确的函数解决问题)。你有什么建议我如何编写一个子程序来解决这个问题吗 要在单元格的字符串值内操作子字符串的属性,需要使用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
我在红色字体颜色中添加了粗体格式
您需要使用instrrev实现上述功能
Function MarkRed()
Dim R As Long
For R = 28 To 29 ' just a sample
MarkTextRed (Cells(R, 2))
Next
End Function
Public Function MarkTextRed(myCell As Range)
Dim T As String
Dim b As Integer, c As Integer
T = myCell.Value
b = InStrRev(T, "\")
c = InStrRev(T, "\", b - 1)
If c < b Then
With myCell.Characters(Start:=c + 1, Length:=(b - c - 1)).Font
.Color = -16776961
End With
End If
End Function
函数MarkRed()
变暗,变长
R=28至29'仅为一个样本
标记文本红色(单元格(R,2))
下一个
端函数
公共函数MarkTextRed(myCell作为范围)
调暗T作为字符串
尺寸b为整数,c为整数
T=myCell.Value
b=仪表电压(T,“\”)
c=InStrRev(T,“\”,b-1)
如果c
您能分享您为解决问题而编写的代码吗?您好@user10829321,您提出的解决方案效果很好,只是它只会更改为A列中的字符串。如果您知道如何将此解决方案应用于所有工作表,其中单元格标题为“Organization”,我有多个同名单元格。非常感谢你的支持