VBA:指定关键字的加粗显示

如何在Excel中加粗指定的关键字?

在Word中,我们可以使用“查找-替换”功能的“格式”选项,指定查找或替换的字符的格式(如加粗、斜体等)。然而在Excel中,当我们设置替换内容的格式时,整个单元格都会被渲染为该格式。

例如,当我们想要将表格中所有的“月”字加粗时,如果这样操作:

image-20220606152808027

则会得到这样的结果:

image-20220606152841796

这并不符合我们的预期。为此,可以使用VBA功能。选择“开发工具-宏”并新建一个宏:

Sub Emph()
    '遍历所有工作表
    For n = 1 To Worksheets.Count
        Dim ws As Variant
        Set ws = Worksheets(n)
        '遍历活动单元格
        For r = 1 To ws.UsedRange.Rows.Count
            For c = 1 To ws.UsedRange.Columns.Count
                '匹配关键字
                Dim cell_value As String
                Dim keyword As String
                Dim kw_len As Integer
                Dim str_loc As Integer
                cell_value = ws.Cells(r, c).Value    '提取单元格的值
                keyword = "月"
                kw_len = Len(keyword)
                start_loc = InStr(1, cell_value, keyword, 1)    '返回匹配到的字符串的起始位置
                '对匹配到的关键字加粗、标黑体
                If start_loc > 0 Then
                    With ws.Cells(r, c).Characters(start_loc, kw_len).Font
                        .Bold = True
                        .Name = "黑体"
                    End With
                End If
            Next
        Next
    Next
End Sub

在加粗的同时,还顺手修改了字体,使得关键字更加突出。

点击运行,可以看到运行结果:

image-20220606154906880

这正是我们想要的效果。

不过,如果一个单元格内有多个重复的关键字,这种方法只能在每个单元格内匹配到第一个。