Excel VBA - Inhalt finden und formatieren?

  • Excel

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Baem.

    Excel VBA - Inhalt finden und formatieren?

    Hallo zusammen, ich wurde soeben auf einer anderen Plattform auf dieses Forum aufmerksam gemacht und hab mich direkt registriert, ich habe folgende Frage und hoffe hier kann man mir helfen:

    Ich möchte wissen ob es möglich ist per Makro einen bestimmten Inhalt zu finden und formatieren.

    Was soll das Makro genau machen? Ich möchte das zum Beispiel nach <geburtsdatum> und </geburtsdatum> gesucht wird, sodass anschließend alles was zwischen <geburtsdatum> und </geburtsdatum> steht automatisch in roter Schrift und fett hervorgehoben wird, das Selbe eben auch mit anderen Wörtern, wo nie klar ist, aus wie vielen Buchstaben, Zahlen und Leerzeichen der Text zwischen den jeweiligen Werten ist.

    Also im Grunde genommen sollte das Macro das ganze dann in etwa so hervorheben:

    <geburtsdatum>01.01.1970</geburtsdatum>
    <vorname>Max</vorname>
    <benutzername>Max Mustermann 123</benutzername>


    Ist sowas überhaupt möglich?

    Ich danke im Voraus für alle Antworten. :)

    PS: Sollte der Beitrag vielleicht in einen anderen Thread gehören, dann sorry dafür - wie gesagt,bin komplett neu hier. :)

    LG
    Benny

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Baem“ ()

    Habe im Anhang 2 Screenshots.

    In Tabelle 1 sind die Daten im Bereich B9:B50 eingetragen und dort soll er suchen (Nicht wundern, beim Screenshot sind die Daten in Zelle A1:A40 eingetragen).


    Bild 1 = Vorher wenn ich die Daten eingefügt habe.
    Bild 2 = Nachher, also wie es aussehen soll am Ende

    Musste einen Teil leider Schwarz einfärben wegen Datenschutz und so *augenroll*
    Bilder
    • Nachher.png

      31,42 kB, 573×754, 126 mal angesehen
    • Vorher.png

      30,97 kB, 586×760, 105 mal angesehen
    Du willst also die Teile von Zellen einfärben, die zwischen > und </ liegen.
    Eine Art XML-Highlighting.

    Visual Basic-Quellcode

    1. Option Explicit
    2. Sub Highlight()
    3. Dim c As Range
    4. For Each c In Range("B9:B50")
    5. HighlightCell c
    6. Next
    7. End Sub
    8. Sub HighlightCell(ByVal c As Range)
    9. Dim HighlightStart As Integer, HighlightEnd As Integer
    10. If IsEmpty(c) Then Exit Sub
    11. c.Font.Color = RGB(0, 0, 0)
    12. If c.Value Like "<*>*</*>" Then
    13. HighlightStart = InStr(1, c.Value, ">")
    14. HighlightEnd = InStr(HighlightStart, c.Value, "</")
    15. c.Characters(Start:=HighlightStart + 1, Length:=HighlightEnd - HighlightStart - 1).Font.Color = RGB(255, 0, 0)
    16. End If
    17. End Sub
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()

    @petaod eine Frage noch...

    Kann man das ganze Schema eigentlich auch umgekehrt anwenden?

    Also dass man das so macht, dass der Text in den Klamern gelöscht wird und nur der dazwischen stehen bleibt? Also so zB:
    Vorher:
    <geburtsdatum>01.01.1970</geburtsdatum>
    <vorname>Max</vorname>
    <benutzername>Max Mustermann 123</benutzername>

    Nachher:
    01.01.1970
    Max
    Max Mustermann 123

    Danke im Voraus und LG
    Benny
    Sehr nice, vielen Dank @petaod :)

    Bei mir kommt hier aber leider eine Fehlermeldung wenn ich das so 1:1 austausche, schau mal mein Screenshot im Anhang.


    EDIT: Ok, ich hatte die Klammer am Ende vergessen, jetzt gehts... Vielen Dank :D
    Bilder
    • Fehler.png

      6,3 kB, 289×178, 95 mal angesehen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Baem“ ()