VBA找到字符串的字体颜色

时间:2014-11-15 18:14:16

标签: excel vba excel-vba vbscript

我是VBA的新手。我正在为一些文件比较编写一个宏。我的要求是如果一个字符串有红色字体,那个字符串应该被忽略迭代,代码应该转移到下一个迭代..我有尝试了以下代码。

Dim compare = {"test1","test2","test3",.....etc}

i=0

For j=1 to Ubound(compare)    
  j=1

  If compare.Characters(j,Len(compare(i))).Font.Color <> vbRed Then    
    ' Some Code
  End If

  i=i+1    
Next

然而,在执行期间,我收到运行时错误424&#34; Object Required.Please帮我完成此任务

提前致谢。

2 个答案:

答案 0 :(得分:3)

假设我们的细胞 A1 通过 A4 喜欢:

pic

然后此代码将找到非红色字符:

Sub ColorTest()
    Dim I As Long, J As Long
    For I = 1 To 4
        For J = 1 To Len(Cells(I, 1).Value)
            If Cells(I, 1).Characters(Start:=J, Length:=1).Font.Color <> vbRed Then
                MsgBox "non-red found at cell A" & I & " position " & J
            End If
        Next J
    Next I
End Sub

答案 1 :(得分:0)

我可以假设您的数据源是excel-sheet(如前面的注释所指出的,纯字符串不包含颜色信息),并且出于某种原因您想要使用数组。那么这可能是一种解决问题的方法(先决条件:完整字符串只有一种颜色)

(刚才看到Gary的学生提供的解决方案没有使用数组......并且提供了只有部分字符串是红色的情况......很好!)

Sub colour()

Dim arr_DB As Variant
Dim i As Long

ReDim arr_DB(1, 1)  'Array size to be adjusted as needed, Base 0 !

For i = 1 To 2
    arr_DB(i - 1, 0) = ActiveSheet.Cells(i, 1).Value   'Value of Cell
    arr_DB(i - 1, 1) = ActiveSheet.Cells(i, 1).Font.Color  'Colour of Font in Cell

Next

If arr_DB(i - 1, 1) = 255 Then   ' No. 255 is colour RED

    'skip.....

End If

End Sub