如何在Microsoft Excel VBA中的合并单元格中修改(更改为粗体)特定文本字符串?

时间:2016-03-22 16:30:55

标签: excel vba excel-vba

我可以使用以下输入成功修改单个或一组正常细胞:

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

在C列的长度下运行,加粗在&#34之后的所有内容;注意:" (特别是过去100个字符,包括找到的文本字符串)

问题是 - 如果C列中有任何合并的单元格,它会忽略它。我已经运行了一些快速测试 - 它识别出单元格中有文本,我可以将合并单元格的内容打印到单个单元格中,以后可以找到文本字符串,但不会找到&# 34;注意:"由于某种原因在合并的单元格本身

2 个答案:

答案 0 :(得分:3)

从合并范围中取出第一个(左上角)单元格并继续使用代码:

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

答案 1 :(得分:1)

据我所知,它适用于以C列中的单元格开头的合并单元格,但是当合并的单元格在C列之前开始时会中断。我能够使用If语句使其工作确定Range("C" & I)中的值是否为空,然后选择合并单元格的第一个单元格并执行格式化。

请参阅下面的代码我需要工作。我的数据集仅适用于单元格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

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

enter image description here

后:

enter image description here