VBA 查找/替换和文本颜色更改
Posted
技术标签:
【中文标题】VBA 查找/替换和文本颜色更改【英文标题】:VBA Find/Replace & Text Color Change 【发布时间】:2020-02-24 04:15:32 【问题描述】:我有一个包含三列的电子表格。 A 列中有一些句子(用黑色字体书写)。 C 列有一个要搜索的术语列表。并且 D 列有一个替换术语列表(用红色字体颜色书写)。
我正在尝试在 A 列中的句子中搜索 C 列中的搜索词。并且,如果 A 列包含 C 列中的任何搜索词,请将 A 列中的文本替换为 D 列中的替换词.
查找/替换功能效果很好。但是我无法让 A 列中字符串的替换部分的字体颜色变为红色。
有什么想法吗?
这是我目前得到的代码。
Private Sub CommandButton1_Click()
For i = 3 To 6
Worksheets("Sheet1").Range("A2:A35").Select
Selection.Replace What:=Cells(i, 3).Value, Replacement:=Cells(i, 4).Value, _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False
Next
Worksheets("Sheet1").Cells(1, 1).Select
End Sub
【问题讨论】:
你能提供一个演示输入/输出的例子吗?我想我理解你想要做什么,但如果我能看到你期望的结果会更容易 我认为您想要做的是将ReplaceFormat
设置为Font.Color = RGB(255,0,0)
或类似的东西。
然而,这似乎替换了整个单元格的格式。不仅仅是最初找到的文本。
如果单元格中的格式不同,您需要遍历所有字符以将格式设置为您想要的。
在我的脑海中,您可以查找-替换并使用类似 $!replaced text$!
的内容,然后通过搜索 $!*$!
来跟踪您的替换,并在删除之前更新这些部分的格式$!$!
字符串的一部分。可能只是更容易准确地了解正在更改的内容,而无需检查每个单元格的文本。当然,您也可以只使用变量数组或其他方式查找->替换自己 - 这可能是最快的方法。
【参考方案1】:
试试这个:
Private Sub CommandButton1_Click()
For i = 3 To 6
Worksheets("Sheet1").Range("A2:A35").Select
With Application.ReplaceFormat
.Font.Color = vbRed
End With
Selection.Replace What:=Cells(i, 3).Value, Replacement:=Cells(i, 4).Value, _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, ReplaceFormat:=True
Next
Worksheets("Sheet1").Cells(1, 1).Select
End Sub
Microsoft Explanation:
设置用于替换单元格格式的替换标准。然后在对 Range 对象的 Replace 方法的后续调用中使用替换条件。
【讨论】:
感谢您回复我。我们这里越来越近了。上述解决方案将单元格中的所有单词更改为红色。是否可以只将字符串的替换部分更改为红色,而单元格中的其余文本保持黑色?以上是关于VBA 查找/替换和文本颜色更改的主要内容,如果未能解决你的问题,请参考以下文章
选择非粗体文本并更改其颜色(选定段落的)- MS Word VBA 宏