ALLE Klammern färben, funktioniert, aber...
11.07.2015 03:14:29
da.ricci
in Anlehnung an einen Beitrag aus Herbers Excel-Forumsarchiv aus dem 2011 Jahr:
Text zwischen eckiger Klammer grün einfärben
habe ich versucht ALLE Klammern() inkl. Inhalt in einer Zelle zu "highlighten".
Was mir auch nach unzähligen "Macro-Einzelschritten" gelang.
CodeAuszug:
For Each aCell In rngStrecke
iPos(1) = InStr(1, aCell, "(")
iLen(1) = InStr(1, aCell, ")") - iPos(1)
iPos(2) = InStr(iPos(1) + 1, aCell, "(")
iLen(2) = InStr(iPos(2) + 1, aCell, ")") - iPos(2)
' (**) formatieren
If iPos(1) > 0 And iLen(1) > 0 Then
aCell.Characters(Start:=iPos(1), Length:=iLen(1) + 1).Font.Color = rgbRed
aCell.Characters(Start:=iPos(1), Length:=iLen(1) + 1).Font.Bold = True
aCell.Characters(Start:=iPos(1), Length:=iLen(1) + 1).Font.Size = 12
End If
If iPos(2) > iPos(1) And iLen(2) > 0 Then
aCell.Characters(Start:=iPos(2), Length:=iLen(2) + 1).Font.Color = rgbRed
aCell.Characters(Start:=iPos(2), Length:=iLen(2) + 1).Font.Bold = True
aCell.Characters(Start:=iPos(2), Length:=iLen(2) + 1).Font.Size = 12
End If
Next aCell
das Ergebnis ist eigentlich zufriedenstellend - ABER:
in der "Testphase" färbte ich die Klammern+Inhalt in "Multifarben":
CodeAuszug:
If iPos(1) > 0 And iLen(1) > 0 Then
aCell.Characters(Start:=iPos(1), Length:=iLen(1) + 1).Font.Color = rgbViolet
End If
If iPos(2) > iPos(1) And iLen(2) > 0 Then
aCell.Characters(Start:=iPos(2), Length:=iLen(2) + 1).Font.Color = rgbRed
End If
If iPos(3) > iPos(2) And iLen(3) > 0 Then
aCell.Characters(Start:=iPos(3), Length:=iLen(3) + 1).Font.Color = rgbBlue
End If
....
und das Ergebnis war ein willkürliches Farbspektakel.Irgendwie ist mir die InStr-Funktion noch ein bisschen "spanisch".
(vielleich kann mir wer diese Funktion - mit all den Len und Mid, .. - mit "einfachen" Worten erklären) ;-)
Frage dazu:
1.) woran liegt das willkürliches Farbspektakel?
2.) und wie könnte man den Code kürzen und gleichzeitig auf iPos(1 To x) erweitern ?
anbei meine Musterdatei:
KlammernÄndern.xls
Grüsse
da.ricci