Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Teilstring ersetzen und Fett formatieren

Teilstring ersetzen und Fett formatieren
11.07.2018 10:03:04
Mario
Hallo Forumsgemeinde,
leider habe ich für mein Problem bis jetzt keine Lösung gefunden. Daher stelle ich das mal ins Forum.
Bin gerade dabei in excel eine Arbeitsvertragsvorlage zu erstellen. Dabei sollen einzelne Teilstrings in einem Text ersetzt werden.
Vorlage:
Herr VORNAME NACHNAME wird das Unternehmen als STELLE.....
Das soll dann nach Eingabe diverser Variablen auch wieder so aussehen.
Herr MAX MUSTERMANN wird das Unternehmen als PROJEKTLEITER ....
Das Ändern der Variablen ist nicht das Problem sondern nur die Formatierung.
Dachte ich hätte jetzt eine Lösung gefunden. Hab dazu die Variablem mit Klammern versehen [ _ VORNAME] [NACHNAME] und setze diese dann mittels diesen Codes auf Fett.

Sub test()
Dim intStart As Integer, intEnde As Integer
Dim rng As Range
For Each rng In Range("B11:B11")
If Len(rng) > 0 Then
intStart = InStr(1, rng, "[")
intEnde = InStr(1, rng, "]")
If intStart > 0 And intEnde > 0 Then
Do
rng.Characters(intStart + 1, intEnde - intStart - 1).Font.Bold = True
intStart = InStr(intEnde + 1, rng, "[")
intEnde = InStr(intEnde + 1, rng, "]")
Loop While intStart > 0 And intEnde > 0
End If
End If
End Sub

Soweit so gut, funktioniert auch. Nur muss ich die Klammern dann natürlich entfernen und wenn ich die ersetze ist die Formatierung im Text wieder weg. :-(
Hat zufällig jemand eine Idee wie ich das lösen kann. Vielleicht denke ich auch zu kompliziert. Bin mit meinem Latein auf jeden Fall am Ende.
mfg
Mario
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Teilstring ersetzen und Fett formatieren
11.07.2018 11:39:07
Matthias
Hallo Mario
In Deinem Code fehlt das Next
nur so als Vorschlag:
Lass die eckigen Klammern gleich weg.
Das erste Zeichen ist dann immer das 6.Zeichen, wo Du beginnst Fett zu formatieren
Herr+Leerzeichen
Frau+Leerzeichen
Da Du nun ja den zu ersetzenden Namen der Person kennst, kannst Du so auch das Ende bestimmen.
Also ab Zeichen(6) bis zum Zeichen (6 + Länge(Name der Person)) formatierst Du Fett
Gruß Matthias
Anzeige
AW: Teilstring ersetzen und Fett formatieren
11.07.2018 12:53:09
Mario
Hallo Matthias,
danke für deine rasche Antwort.
Das next wollte sich nicht mitkopieren lassen, erst beim nächsten Mal :-)
Ich glaub ich hab es dank deines Tipps hinbekommen.
Sub test()
Dim intStart As Integer, intEnde As Integer
Dim rng As Range
Dim wert As String
wert = "Projektleiter"
For Each rng In Range("B11:B15")
If Len(rng) > 0 Then
intStart = InStr(1, rng, wert)
intEnde = intStart + len(wert)
If intStart > 0 And intEnde > 0 Then
rng.Characters(intStart, intEnde - intStart).Font.Bold = True
End If
End If
Next
End Sub
Das funktioniert schon mal für jede Zeile im Bereich. Muss nur noch eine Schleife innerhalb der Zelle erstellen (falls der Wert mehrfach in der selben Zelle vorkommt). Dann sollte das passen. Danke nochmal.
mfg
Mario
Anzeige
AW: Teilstring ersetzen und Fett formatieren
11.07.2018 12:45:21
mmat
Hallo,
du mußt erst den Namen ersetzen und dann formatieren, etwa so (vereinfacht):
Sub ersetze()
Dim intStart As Integer, intEnde As Integer
Dim rng As Range
Dim neu As String, s As String
neu = "Max Mustermann"
For Each rng In Range("B11:B11")
If Len(rng) > 0 Then
intStart = InStr(1, rng, "[")
intEnde = InStr(1, rng, "]")
If intStart > 0 And intEnde > 0 Then
s = rng.Value
s = Left(s, intStart - 1) + neu + Mid(s, intEnde + 1)
rng.Value = s
rng.Characters(intStart, Len(neu)).font.Bold = True
End If
End If
Next
End Sub

Anzeige
AW: Teilstring ersetzen und Fett formatieren
11.07.2018 12:59:12
Mario
Hallo mmat,
super, danke. Das funktioniert noch einfacher als das, was ich jetzt schon zusammengebastelt habe :-)
mfg
Mario
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Teilstring ersetzen und Fett formatieren in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und gehe zu den Entwicklertools: Stelle sicher, dass die Entwicklertools aktiviert sind. Du kannst dies unter "Datei" > "Optionen" > "Menüband anpassen" tun.

  2. Gehe zum Visual Basic-Editor: Klicke auf "Visual Basic" in der Entwicklertools-Leiste oder drücke ALT + F11.

  3. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (deine Arbeitsmappe)" und wähle "Einfügen" > "Modul".

  4. Füge den Code ein: Verwende den folgenden VBA-Code, um Teilstrings zu ersetzen und den Text fett zu formatieren:

    Sub test()
       Dim intStart As Integer, intEnde As Integer
       Dim rng As Range
       Dim wert As String
       wert = "Projektleiter"
       For Each rng In Range("B11:B15")
           If Len(rng) > 0 Then
               intStart = InStr(1, rng, wert)
               intEnde = intStart + Len(wert)
               If intStart > 0 And intEnde > 0 Then
                   rng.Characters(intStart, intEnde - intStart).Font.Bold = True
               End If
           End If
       Next
    End Sub
  5. Starte das Makro: Schließe den Editor und gehe zurück zu Excel. Starte das Makro über "Entwicklertools" > "Makros".


Häufige Fehler und Lösungen

  • Fehler: Formatierung geht verloren: Wenn du den Text ersetzt und die Formatierung verloren geht, stelle sicher, dass du zuerst den Teilstring ersetzt, bevor du die Schrift fett formatierst.

  • Fehler: Ungültige Bereichsreferenz: Achte darauf, dass der Zellbereich im Code (Range("B11:B15")) korrekt ist und die Zellen tatsächlich Daten enthalten.


Alternative Methoden

Eine Möglichkeit, die Formatierung zu automatisieren, ist die Verwendung von Excel-Tastenkombinationen. Du kannst die Zelle auswählen und CTRL + B drücken, um den Text fett zu formatieren, nachdem du den Teilstring ersetzt hast.


Praktische Beispiele

Hier ein Beispiel zur Anwendung:

Angenommen, in Zelle B11 steht der Text "Herr [VORNAME NACHNAME] wird das Unternehmen als [STELLE]". Verwende den folgenden VBA-Code, um "Max Mustermann" und "Projektleiter" einzufügen und fett zu formatieren:

Sub ersetze()
    Dim intStart As Integer, intEnde As Integer
    Dim rng As Range
    Dim neu As String
    neu = "Max Mustermann"
    For Each rng In Range("B11")
        If Len(rng) > 0 Then
            intStart = InStr(1, rng, "[")
            intEnde = InStr(1, rng, "]")
            If intStart > 0 And intEnde > 0 Then
                rng.Value = Replace(rng.Value, "[VORNAME NACHNAME]", neu)
                rng.Characters(intStart, Len(neu)).Font.Bold = True
            End If
        End If
    Next
End Sub

Tipps für Profis

  • VBA-Funktionen nutzen: Verwende VBA-Funktionen wie InStr und Replace, um Text effizient zu bearbeiten.
  • Schleifen optimieren: Achte darauf, dass du Schleifen effizient gestaltest, um die Ausführungsgeschwindigkeit zu verbessern.
  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen in deinen VBA-Code, um mögliche Laufzeitfehler zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Teilstrings in einer Zelle ersetzen und fett formatieren?
Du kannst eine Schleife innerhalb deiner bestehenden Schleife verwenden, um jede Instanz des Teilstrings zu finden und zu formatieren.

2. Gibt es eine Tastenkombination, um Text in Excel fett zu formatieren?
Ja, du kannst die Tastenkombination CTRL + B verwenden, um den ausgewählten Text schnell fett zu formatieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige