[英]Excel VBA - Delete Single Character from Cell without losing formatting of remainder of cell contents
我正在嘗試刪除單元格中第一次出現的“ <”和“>”,而不會丟失該單元格其余內容的格式。
我看過這里的幾個地方,其他地方都無濟於事。
這就是我想要做的:
說“ A1”包含以下文本:
"This is <a> long string with several <occurrences> of a <special> character."
無論如何,我想做的就是從包含它們的第一個單詞中刪除“>”,並在理想的世界中刪除“ <”,同時保持粗體格式以及“ <”和“>”在包含它們的下一個單詞上。
這只是在我遇到問題的代碼之前執行的其他代碼。
inTx = Range("A2").Value
outTx = Replace(inTx, "Init_Day", Range("A3").Value)
Range("A2").Value = outTx
用實際的文本替換<placeholder>
文本,在這種情況下為兩位數。
這是對我不起作用的代碼:
SearchString = Range("A2").Value
Char1 = "<"
Char2 = ">"
For i = 1 To Len(SearchString)
If Mid(SearchString, i, 1) = Char1 Then
startPos = i
Exit For
End If
Next i
For i = 1 To Len(SearchString)
If Mid(SearchString, i, 1) = Char2 Then
endPos = i
Exit For
End If
Next i
Range("A2").Characters(startPos, endPos - startPos).Font.Bold = True
Range("A2").Characters(startPos - 1, 1).Delete
所有代碼都可以正常工作,直到到達最后一行:
Range("A2").Characters(startPos - 1, 1).Delete
那什么也沒發生
我什至嘗試過:
Range("A2").Characters(startPos - 1, 20).Delete
依然沒有...
我知道這應該很容易,但是我似乎無法弄清楚。
提前致謝。
如下代碼:
Sub Foo()
Const Char1 As String = "<", Char2 As String = ">"
Dim SearchString As String
Dim i As Integer, startPos As Integer, endPos As Integer
SearchString = Range("A2").Value
startPos = InStr(SearchString, Char1)
endPos = InStr(SearchString, Char2)
Range("A2").Characters(startPos, endPos - startPos).Font.Bold = True
Range("A2").Characters(startPos, 1).Delete
Range("A2").Characters(endPos - 1, 1).Delete
End Sub
變成這個:
Some <bold> text I just <made> up.
變成這個:
Some bold text I just <made> up.
那是您要找的東西嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.