Sub NurTextMitFarbeDerSelectionUebriglassen()
Dim doc As Document, myTab As Table
Dim lFarbe As Long, x As Long, t As Long, z As Long, sp As Long, fTabsA As Long, fTabsE As Long
Dim fTabsStart() As Long, fTabsEnd() As Long, fTabsCount As Long
Set doc = ActiveDocument
->Farbe aus einem Zeichen bestimmen, welche erhalten werden soll
If Selection.Start <> Selection.End - 1 Then MsgBox Bitte ein Zeichen selektieren, dass erhalten bleiben soll.: GoTo AUFRAEUMEN
lFarbe = Selection.Font.Color
->Tabellen-Anfang und -Ende feststellen
fTabsCount = doc.Tables.Count
If fTabsCount <> 0 Then
ReDim fTabsStart(1 To fTabsCount)
ReDim fTabsEnd(1 To fTabsCount)
For t = 1 To fTabsCount
fTabsStart(t) = doc.Tables(t).Range.Start
fTabsEnd(t) = doc.Tables(t).Range.End
Next
End If
->Zeichen ausserhalb von Tabellen bearbeiten
t = fTabsCount
If t > 0 Then
->Anfang und Ende der nächsten Tabelle einstellen
fTabsA = fTabsStart(t)
fTabsE = fTabsEnd(t)
End If
For x = doc.Content.End To doc.Content.Start + 1 Step -1
If x = fTabsE Then
->Tabelle überspringen
x = fTabsA + 1
->Anfang und Ende der nächsten Tabelle einstellen
t = t - 1
If t > 0 Then
fTabsA = fTabsStart(t)
fTabsE = fTabsEnd(t)
Else
fTabsE = 0
End If
Else
If doc.Range(Start:=x - 1, End:=x).Font.Color <> lFarbe Then
doc.Range(Start:=x - 1, End:=x).Delete
End If
End If
Next
->Zeichen innerhalb von Tabellen bearbeiten
For Each myTab In doc.Tables
For z = 1 To myTab.Rows.Count
For sp = 1 To myTab.Columns.Count
->Zeichen mit auf letzte Absatzmarke bearbeiten
For t = myTab.Cell(z, sp).Range.Characters.Count - 1 To 1 Step -1
If myTab.Cell(z, sp).Range.Characters(t).Font.Color <> lFarbe Then
myTab.Cell(z, sp).Range.Characters(t).Delete
End If
Next
Next
Next
Next
AUFRAEUMEN:
Set doc = Nothing: Set myTab = Nothing
End Sub