[英]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.