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>これにより、テキストが実際のテキスト(この場合は2桁の数字)に置き換えられます。

これが私のために機能していないコードです:

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 に答える