我正在尝试删除第一次出现的“<”和“>”在单元格中,不会丢失单元格内容的其余部分的格式。
我在这里和其他地方看过几个地方,但没有用。
这就是我想要做的事情:
说“A1”包含文字:
"This is <a> long string with several <occurrences> of a <special> character."
在任何情况下,我要做的是删除“&gt;”,并在完美的世界中使用“&lt;”,从包含它们的第一个单词开始,同时保持粗体格式以及“&lt; ;”和“&gt;”在包含它们的下一个单词上。
这只是在我遇到问题的代码之前执行的其他代码。
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
仍然没有...
我知道这应该很容易,但我似乎无法弄明白。
提前致谢。
答案 0 :(得分:1)
以下代码:
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.
这就是你要找的东西吗?