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 宏

Word VBA - 通过样式应用备用字体颜色不适用于已应用直接格式(字体颜色)的文本

更改按钮文本和状态的颜色

更改崇高文本3中特定单词的颜色

使用 VBA 进行颜色填充,以单元格值为条件

在swift4中查找按钮的文本颜色