#Excel: #Text mit #VBA #fett #formatieren – aber nur #zumTeil

Sie wollen immer noch #Teile Ihrer #Zellinhalte per #VBA #formatieren? Da sind aber Texte mit einer Länge von mehr als 255 Zeichen dabei (das geht seit Version 2007) … und es #funktioniert #nicht?

Dann gehen wir das anders als gestern an – wir müssen die Positionen wegschreiben, dann die Klammern löschen und dann erst formatieren:

Sub Brackets_Bold()
Dim myCell As Range
Dim myTxt As Variant
Dim myLen As Long
Dim StartPos As Long
Dim EndPos As Long
Dim iStart(1 To 200) As Long
Dim iEnd(1 To 200) As Long
Dim I As Long
Dim nI As Long
    On Error GoTo 0
    For Each myCell In ActiveWorkbook.ActiveSheet.UsedRange.Cells
        I = 1
        EndPos = 1
        StartPos = InStr(EndPos, myCell.Text, "[")
        While StartPos <> 0
            If Left(myCell.Formula, 1) <> "=" Then
                'myCell.Characters(Start:=StartPos, Length:=1).Delete
                EndPos = InStr(StartPos, myCell.Text, "]")
                'StartPos = StartPos
                If EndPos = 0 Then
                    EndPos = Len(myCell.txt)
                End If
                iStart(I) = StartPos
                iEnd(I) = EndPos
                I = I + 1
   
                StartPos = InStr(EndPos + 1, myCell.Text, "[")
            Else
                StartPos = 0
            End If
        Wend
        nI = I - 1
        myCell.Replace What:="[", Replacement:="", LookAt:=xlPart, SearchOrder:= _
        xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
        myCell.Replace What:="]", Replacement:="", LookAt:=xlPart, SearchOrder:= _
        xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

        For I = 1 To nI
            With myCell.Characters(Start:=iStart(I) - 2 * (I - 1), Length:=iEnd(I) - iStart(I) - 1).Font
                .Bold = True
            End With
        Next I
    Next myCell
End Sub

Puh. Lösung gefunden 🙂