2

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

我在这里找了好几个地方,其他的都没有用。

这就是我想要做的:

说“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

依然没有...

我知道这应该很容易,但我似乎无法弄清楚。

提前致谢。

4

1 回答 1

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.

进入这个:

我刚刚<制作>了一些粗体文字。

那是你要找的吗?

于 2012-10-31T02:43:56.797 回答