我陷入了这个问题:我想循环执行以下特定操作的woorkbook的所有工作表:在“组织”列中,将颜色更改为最后一个反斜杠之间的字符串部分:
我想更改颜色的字符串部分长度不一样(否则我可以使用Right函数解决该问题)。您对我如何编写子例程来解决该问题有什么建议? 不幸的是,我尝试了几种选择都没有成功。
非常感谢
答案 0 :(得分:1)
要在单元格的字符串值内操纵子字符串的属性,您需要使用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
我已将粗体格式添加到红色字体颜色。
答案 1 :(得分:0)
您需要使用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