簡體   English   中英

Excel VBA-從單元格刪除單個字符,而不會丟失單元格其余內容的格式

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

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