如何修改(更改为粗体)Microsoft Excel VBA中合并单元格中的特定string?

我可以使用以下input成功修改单个或一组正常单元格:

.Range("C" & i) _ .Characters(WorksheetFunction.Find("NOTE:", Range("C" & i).Value, 1), 100) _ .Font.Bold = True 

它沿着C列的长度延伸,并且在“注意”之后加粗 (特别是100个字符,包括find的文本string)

问题是 – 如果C列中有任何合并的单元格,它会忽略它。 我已经运行了一些快速testing – 它识别单元格中有文本,我可以将合并单元格的内容打印到单个单元格中,以后可以find该文本string,但是对于某些单元格不会find“NOTE:”合并单元本身的原因

从合并的范围中取出第一个(左上angular)单元格,并继续执行代码:

 With .Range("C" & i).MergeArea.Cells(1, 1) lngFound = InStr(1, .Value2, "NOTE:", vbTextCompare) If lngFound > 0 Then .Characters(lngFound, 100).Font.Bold = True End If End With 

从我所知道的情况来看,它适用于以列C中的单元格开头的合并单元格,但在合并单元格在列C之前开始时会中断。我可以使用If语句来确定是否在Range("C" & I)为空,然后select合并单元格的第一个单元格并执行格式化。

请参阅下面的代码我开始工作。 我的数据集仅适用于单元格C1:C20

 Sub test() Dim i As Integer Dim rng As Range With ThisWorkbook.ActiveSheet On Error Resume Next For i = 1 To 20 If .Range("C" & i).Value = "" Then If Range("A" & i).Value <> "" Then Set rng = Range("A" & i) Else Set rng = .Rows(i).SpecialCells(xlCellTypeBlanks)(1).Offset(0, 1) End If rng.Characters(WorksheetFunction.Find("NOTE:", rng.Value, 1), 100).Font.Bold = True Else .Range("C" & i).Characters(WorksheetFunction.Find("NOTE:", Range("C" & i).Value, 1), 100).Font.Bold = True End If Next i End With End Sub 

之前(边界用于表示合并单元格开始和结束的位置):

在这里输入图像说明

后:

在这里输入图像描述