Excel VBA – 从单元格中删除单个字符,而不会丢失单元格内容的其余部分的格式

我试图删除单元格中第一次出现的“<”和“>”,而不会丢失单元格其余内容的格式。

我已经在这里看了几个地方,其他,无济于事。

这是我想要做的:

说“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>文本replace为实际文本,在这种情况下是两位数字。

这里是不适合我的代码:

 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.

进入这个:

 一些粗体的文字我只是<made>起来的。 

那是你在找什么?