macros改变范围内的特定字符的颜色

我想为我的工作表开发一个macros,它将选取一个范围,并根据其颜色改变特定字符的颜色。 在这之前 ,我也有同样的答案 ,我把Gary的学生代码作为我的剧本的基础。 它工作,但我注意到一个我无法解决的问题。

当我有一个单元格已经开始与一个不同的颜色值的模式,它只会改变第一个字符为我想要的颜色,并改变其余字符和字旁边的模式。 它只发生在这种情况下,对于其他单元格开始在黑色(模式)它完美的作品。

例如:假设斜体字符是红色的 (我想要改变的颜色),粗体字符是蓝色的 (颜色代替红色),其余的是自动颜色(黑色):

应用macros之前的单元格值: 这是一个值。 应用macros后的单元格值: T是一个值。

我已经find了它,并没有取得成功。
它可能是一个Excel错误或脚本中的错误?

看我的下面的代码版本:

Sub ColorChange() Dim I As Long, J As Long, K As Long 'I = Rows, K = Columns, J = Chars For K = 6 To 8 'For columns F to H For I = 2 To 200 'For rows 2 to 200 For J = 1 To Len(Cells(I, K).Value) If Cells(I, K).Characters(Start:=J, Length:=1).Font.Color <> vbAutomatic Then Cells(I, K).Characters(Start:=J, Length:=1).Font.Color = RGB(226, 107, 10) Cells(I, K).Characters(Start:=J, Length:=1).Font.Bold = True End If Next J Next I Next K End Sub 

首先是没有这样的颜色指数(好… 颜色指数) vbAutomatic ; 相反,您需要使用xlAutomatic (-4105)来表示自动颜色选项。

其次, FontColor属性会返回一个RGB值,代表您select的颜色(0 =黑色,2 24 – 1 =白色),而不是您select的选项的索引。 我推测你是在ColorIndex属性之后,虽然检查Color=0可能会更明智: 黑色字体颜色选项没有索引-4105,但索引1

那么,更新的J循环:

  For J = 1 To Len(Cells(I, K).Value) If Cells(I, K).Characters(Start:=J, Length:=1).Font.Color <> 0 Then Cells(I, K).Characters(Start:=J, Length:=1).Font.Color = RGB(226, 107, 10) Cells(I, K).Characters(Start:=J, Length:=1).Font.Bold = True End If Next J