我是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帮我完成此任务
提前致谢。
答案 0 :(得分:3)
假设我们的细胞 A1 通过 A4 喜欢:
然后此代码将找到非红色字符:
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