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>起来的。
那是你在找什么?