用于更改范围

时间:2015-09-15 14:35:09

标签: excel vba excel-vba

我想为我的工作表开发一个宏,它可以获取一个范围并根据颜色更改特定字符的颜色。这是similarly answered before here,我把加里的学生代码作为我脚本的基础。它有效,但我注意到一个我无法解决的问题。

当我的单元格已经以一个颜色与模式不同的值开始时,它只会将第一个字符更改为我想要的颜色,并将其余的字符和单词旁边的单词更改为模式。它只发生在这种情况下,对于其他以黑色(图案)开始的细胞,它可以很好地工作。

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

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

我搜索过它并没有成功。
可能是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

1 个答案:

答案 0 :(得分:0)

首先,没有这样的颜色索引(井...... 颜色索引)为vbAutomatic;相反,您需要使用xlAutomatic( - 4105)来表示自动颜色选项。

其次,Color的{​​{1}}属性将返回表示所选颜色的RGB值(0 =黑色,2 24 - 1 =白色)而不是索引您选择的选项。我推测你是在Font财产之后,虽然检查ColorIndex可能更明智: Black 字体颜色选项没有索引 - 4105,但索引 1

那么,更新的Color=0循环:

J