Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1872to1876
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bestimmte Anzahl Zeichen färben und fett

Bestimmte Anzahl Zeichen färben und fett
02.03.2022 14:12:09
Dieter(Drummer)
Guten Tag an alle ...
Wie kann ich per VBA Code, im markierten Bereich, die Zeichen oder auch Zahlen, von rechter Klammer aus, rot (3) und fett (.FontStyle = "Fett") gefärbt werden?
Es soll aber nur bis % + erster Buchstabe von links (ist nicht immer ein "S") gefärbt werden.
Siehe Muster, dort sollte dann "E", "VT" und "S1" rot und fett gefärbt werden.
(%SE)
(%SVT)
(%SS1)
Mit der Bitte um Hilfe,
Gruß Dieter(Drummer)

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bestimmte Anzahl Zeichen färben und fett
02.03.2022 14:41:46
GerdL
Hallo Dieter,
ohne Prüfung, ob die Trenner vorhanden sind.

Sub Unit()
Dim intStart As Integer, intEnd As Integer
intEnd = InStrRev(ActiveCell, ")") - 1
intStart = InStrRev(ActiveCell, "(%") + 3
ActiveCell.Characters(lngstart, intEnd - intStart + 1).Font.Color = vbRed
End Sub
Gruß Gerd
AW: Es kommt ein Kompilierungsfehler und
02.03.2022 15:11:54
Dieter(Drummer)
Danke Gerd für Rückmeldung und Code.
Es kommt eine Kompilierungsfehler mit Hinweis: Variable nicht defniert und "lngstart" wird markiert.
Kannst Du da bitte nochmal helfen?
Gruß, Dieter(Drummer)
AW: Es kommt ein Kompilierungsfehler und
02.03.2022 15:27:16
GerdL
Entschuldige Dieter,
in der letzten Codezeile steht "lngstart" wo "intStart" stehen muss.
Das kommt davon, wenn ich noch ungetestet verschlimmbessern will :-)
Gruß Gerd
Anzeige
AW: Es kommt ein Kompilierungsfehler und
02.03.2022 15:28:57
JoWE
so getestet: :=):

Sub Unit()
Dim intStart As Integer, intEnd As Integer
intStart = InStrRev(ActiveCell, "(%") + 2
intEnd = InStrRev(ActiveCell, ")") - 1
ActiveCell.Characters(intStart + 1, intEnd - intStart).Font.Color = vbRed
End Sub

AW: Danke Gerd perfekt. Geht da noch
02.03.2022 15:42:24
Dieter(Drummer)
Hallo Gerd,
so gehts prima, leider aber nur für eine Zelle und nicht für mehrere markierte Zellen
Gibt's da auch noch eine Lösung?
Gruß, Dieter(Drummer)
AW: Danke Gerd perfekt. Geht da noch
02.03.2022 15:47:17
GerdL
Hallo Dieter,
nimm statt ActiveCell eine Range-Variable u. binden eine Schleife drum.
Dim C As Range
For each C in Selection
.....
Next
Gruß Gerd
Anzeige
AW: Wa habe ich falsch im Code
02.03.2022 15:54:32
Dieter(Drummer)
Hallo Gerd,
habe jetz den Code so und was habe da falsch?
  • 
    Sub Unit()
    Dim intStart As Integer, intEnd As Integer
    Dim C As Range
    For Each C In Selection
    intEnd = InStrRev(ActiveCell, ")") - 1
    intStart = InStrRev(ActiveCell, "(%") + 3
    ActiveCell.Characters(intStart, intEnd - intStart + 1).Font.Color = vbRed
    Next
    End Sub
    

  • Gruß, Dieter(Drummer)
    AW: Wa habe ich falsch im Code
    02.03.2022 15:57:48
    GerdL
    Nichts, Dieter. Du musst nur noch in der Schleife dreimal "C" statt "ActiveCell" schreiben.
    Gruß Gerd
    AW: Habe Fehler von mir gefunden ...
    02.03.2022 15:59:42
    mir
    Hallo Gerd,
    war mein Fehler im Code. Jetzt steht dort:
  • C.Characters(intStart, intEnd - intStart + 1).Font.Color = vbRed

  • und das funktioniert prima.
    Danke Dir für Deine Hilfe und Geduld.
    Gruß und einen erfolgreichen Tag.
    Dieter(Drummer)
    Anzeige
    AW: Jetzt funktioniert's ...
    02.03.2022 16:07:59
    Dieter(Drummer)
    Hallo Gerd,
    jetzt geht's wirklich, mit dem jetzigen Code:
  • 
    Sub Unit()
    Dim intStart As Integer, intEnd As Integer
    Dim C As Range
    For Each C In Selection
    intEnd = InStrRev(ActiveCell, ")") - 1
    intStart = InStrRev(ActiveCell, "(%") + 3
    C.Characters(intStart, intEnd - intStart + 3).Font.Color = vbRed
    Next
    End Sub
    

  • Danke und Gruß,
    Dieter(Drummer)
    AW: Jetzt funktioniert's ...
    02.03.2022 16:12:00
    GerdL
    Hallo Dieter,
    auf Dauer ist es so besser.
    
    Sub Unit()
    Dim intStart As Integer, intEnd As Integer
    Dim C As Range
    For Each C In Selection
    intEnd = InStrRev(C, ")") - 1
    intStart = InStrRev(C, "(%") + 3
    C.Characters(intStart, intEnd - intStart + 3).Font.Color = vbRed
    Next
    End Sub
    
    Gruß Gerd
    Anzeige
    AW: Danke Gerd, aber noch ein Problem ...
    02.03.2022 16:35:29
    Dieter(Drummer)
    Hallo Gerd,
    ... es wird die Rechte Klammer ")" auch rot gefärbt, wenn z.B. weniger als 3 Buchstaben oder Zahl drin stehen. Es sind ja manchmal 1, oder 2 oder auch 3 die gefärbt werden
    z.B. (%RAB), da wird dann die rechte Klammer auch rot.
    Kann man den Code erweitern, dass anschliessend im merkuerrten Bereich die rechte Klammer, die Farbe"Automatisch" bekommt?
    Wäre toll, wenn Du da auch eine Lösung hast.
    Gruß, Dieter(Drummer)
    AW: Habe Lösung gefunden ...
    02.03.2022 16:54:54
    Dieter(Drummer)
    Hallo Gerd,
    ... mein/Dein Code sieht jetzt so aus und klappt. Rechte Klammer wird schwarz.
  • 
    Sub Unit()
    Dim intStart As Integer, intEnd As Integer
    Dim C As Range
    For Each C In Selection
    intEnd = InStrRev(C, ")") - 1
    intStart = InStrRev(C, "(%") + 3
    C.Characters(intStart, intEnd - intStart + 3).Font.Color = vbRed
    C.Characters(intEnd + 1).Font.Color = vbBlack
    Next
    End Sub
    

  • Dank Dir nochmal und
    Gruß, Dieter(Drummer)
    Anzeige
    AW: Habe Lösung gefunden ...
    02.03.2022 17:18:17
    GerdL
    Hallo Dieter,
    da hatten wir unterwegs die Zugaben( +1 und +3) vertauscht.
    
    Sub Unit()
    Dim intStart As Integer, intEnd As Integer
    Dim C As Range
    For Each C In Selection
    intEnd = InStrRev(C, ")") - 1
    intStart = InStrRev(C, "(%") + 3
    C.Characters(intStart, intEnd - intStart + 1).Font.Color = vbRed
    Next
    End Sub
    
    Aber wie schon erwähnt, ist der Code ohne Plausibilitätsprüfungen.
    Gruß Gerd
    AW: Top und noch kürzer ...
    02.03.2022 17:34:16
    Dieter(Drummer)
    Danke Gerd,
    ... und perfekte Lösung.
    Danke nochmal für erneute Verbesserung.
    Gruß und einen erfreulichen Abend,
    Dieter(Drummer)
    AW: Danke JoWe, klappt auch prima, ausser
    02.03.2022 15:46:11
    Dieter(Drummer)
    Danke JoWe für Deinen Code, der auch prima funktioniert, ausser für mehrere markierte Zellen.
    Code greift nur für 1. Zelle in der Markierung.
    Habe Gerd dazu schon geschrieben und will jetzt nicht 2 Personen damit behelligen, ausser Du möchtest es dennoch.
    Gruß, Dieter(Drummer)
    Anzeige
    AW: Ich hatte nur Gerds Code leicht korrigiert...
    02.03.2022 16:31:42
    JoWE
    ....also muss mir nicht gross gedankt werden.
    Hauptsache ist doch, dass es jetzt auch klappt.
    Gruß
    Jochen

    136 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige