簡體   English   中英

如何在Microsoft Excel VBA中的合並單元格中修改(更改為粗體)特定文本字符串?

[英]How can I modify (change to bold) a specific string of text in a merged cell in Microsoft Excel VBA?

通過以下輸入,我可以成功修改單個或一組普通單元:

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

它沿C列的長度移動,並以粗體顯示 “注意:”之后的所有內容(具體是100個字符,包括找到的文本字符串)

問題是-如果C列中有任何合並的單元格,它將忽略它。 我已經進行了一些快速測試-它識別出單元格中有文本,並且我可以將合並后的單元格的內容打印到一個單元格中,該單元格稍后可以找到文本字符串,但對於某些單元格則找不到“ NOTE:”合並單元格本身中的原因

只需從合並范圍中取出第一個(左上方)單元格,然后繼續執行代碼即可:

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)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

之前(邊界用於表示合並的單元格的開始和結束位置):

在此處輸入圖片說明

后:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM