【发布时间】:2018-12-24 09:18:04
【问题描述】:
我想循环工作簿的所有工作表,以更改具有特定字符串的单元格的颜色。
我使用.Replace(我需要 MatchCase 和 lookat)。
它在不考虑大小写的情况下替换文本。 (例如,如果在数组中它是小写的并且找到的字符串是大写的,它将被更改为小写)。绕过此问题的唯一方法是使用MatchCase:= false 并列出所有选项,这可能效率非常低。
我可以使用.Find 或其他函数执行该操作吗?
Sub CellMarked()
Dim fndlist As Variant, x As Integer, sht as worksheet
fndlist = Array("Column1", "Column2")
For Each sht In ActiveWorkbook.Worksheets
With sht
For x = LBound(fndlist) To UBound(fndlist)
.Cells.Replace What:=fndlist(x), Replacement:=fndlist(x), _
lookat:=xlPart, SearchOrder:=xlByRows, MatchCase:=True, _
SearchFormat:=False, ReplaceFormat:=True
Application.ReplaceFormat.Font.Color = 255
Next x
End With
next sht
End Sub
【问题讨论】:
-
VBA 不是最好的解决方案。你真的应该考虑使用条件格式。
-
@K.Dᴀᴠɪs,我倾向于尽可能避免条件格式化,因为它会增加文件计算时间和文件大小。但这是我的感觉
-
@K.Dᴀᴠɪs,感谢您的建议,很遗憾我无法向工作簿添加任何条件格式,此宏应引用其他工作簿。