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

Forumthread: gefundene Zellen färben

gefundene Zellen färben
Jochen
Schönen guten Morgen,
wieder mal beschäftig mich ein Problem:
Ich habe eine Datei mit vielen Tabellenblättern, die alle geschützt sind bis auf die Spalte B.
Mit dem folgenden Code suche ich nach Namen in der Spalte A:
  • 
    Public Sub SearchAllTables(Optional sBlattname$)
    Dim ws As Worksheet
    Dim c
    Dim firstAddress As String, sSearch
    Dim secAddress
    Dim GFound As Boolean
    Dim GWeiter As Boolean
    GWeiter = False
    GFound = False
    anf:
    If sBlattname = "" Then
    Set ws = ActiveSheet
    Else
    Set ws = ActiveWorkbook.Sheets(sBlattname)
    If ws.Visible  xlSheetVisible Then
    If MsgBox("Blatt """ & sBlattname & """ ist zur Zeit ausgeblendet." _
    & vbLf & vbLf & "Suche nicht möglich! Blatt jetzt einblenden?", _
    vbInformation + vbYesNo, "Suche in Tabellenblatt") = vbNo Then
    Exit Sub
    Else
    ws.Visible = xlSheetVisible
    End If
    End If
    End If
    sSearch = InputBox("Suche" & " nach:", "Search In All Tables", sSearch)
    If sSearch = "" Then
    Exit Sub
    End If
    weiter:
    With ws.Cells
    Set c = .Find(sSearch, LookIn:=xlValues, lookat:=xlPart, MatchCase:=False)
    If Not c Is Nothing Then
    GFound = True
    ws.Select
    c.Select
    Selection.Offset(0, 1).Select
    firstAddress = c.Address
    If MsgBox("Weitersuchen ?", vbQuestion + vbYesNo) = vbYes Then
    Do
    Set c = .FindNext(c)
    secAddress = c.Address
    If c.Address = firstAddress Then
    Exit Do
    End If
    c.Select
    Selection.Offset(0, 1).Select
    If MsgBox("Weitersuchen ?", vbQuestion + vbYesNo) = vbNo Then
    GWeiter = True
    GoTo ende
    End If
    Loop While Not c Is Nothing And secAddress  firstAddress And c.Address   _
    firstAddress
    Else
    GWeiter = True
    GoTo ende
    End If
    End If
    End With
    ende:
    If GFound = False Then
    If MsgBox("Suchwert nicht gefunden ! Neue Suche ?", vbInformation + vbYesNo) = vbYes  _
    Then
    GoTo anf:
    End If
    Else
    If GWeiter = False Then
    If MsgBox("Sie haben das Tabellenblatt durchsucht ! Soll die Suche neu gestartet  _
    werden ?", vbInformation + vbYesNo) = vbYes Then
    GoTo weiter
    End If
    End If
    End If
    End Sub
    


  • Funktioniert auch super. Die Namen werden gefunden und der Cursor springt automatisch in die Spalte B auf gleicher Höhe wie der gefundene Name.
    Ich hätte nun gerne, dass die Zelle in Spalte B die dem Namen in Spalte A entspricht, farbig markiert wird. Ein schönes Lindgrün oder zartes Blau wäre super. Wichtig ist, dass man die Eingabe, die in Spalte B gemacht wird, ohne Probleme noch lesen kann.
    Wenn der Suchvorgang erfolglos war und man weitersucht, dann soll die Farbe wieder verschwinden.
    Ebenso soll die Farbe verschwinden, wenn man eine Eingabe gemacht hat und eine neue Suche startet.
    DAs Einfärben soll also nur dazu dienen, die entsprechende Zelle in Spalte B besser kenntlich zu machen. Es soll nicht permanent sein und verschwinden, wenn weiter gesucht wird, wenn eine Eingabe erfolgt oder wenn die Suche abgebrochen wird.
    Gibts hier ne Möglichkeit?
    Wäre super
    Einen schönen Tag wünscht
    Jochen
    Anzeige

    3
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Benutzer
    Anzeige
    AW: gefundene Zellen färben
    21.10.2011 10:34:47
    Jack
    Hallo
    der befehl ist
    ActiveCell.Interior.ColorIndex = "deine Farbe"
    kannst dir eine aus 56? aussuchen =)
    lg
    AW: gefundene Zellen färben
    24.10.2011 02:45:13
    Jochen
    Hallo und schönen guten Morgen,
    vielen Dank Jack für Deine Antwort. Nur wo setz ich den Befehl genau hin? Hab irgendwie den Überblick verloren.
    Merci und nen schönen Tag wünscht
    Jochen
    Anzeige
    AW: gefundene Zellen färben
    24.10.2011 05:43:33
    Jochen
    Schönen Guten Morgen nochmals,
    hab ein wenig nachgedacht: Die Lösung von Jack färbt mir jede aktive Zelle ein.
    Das Problem bleibt aber trotzdem bestehen:
    Ich mache eine Suche in Spalte A, Excel findet den Begriff, der Cursor springt in die benachbarte Zelle in Spalte B und diese Zelle soll farblich markiert werden. Wird die Suche beendet, soll die Markierung bestehen bleiben, und zwar solange keine Eingabe erfolgt (Sprung zu einer anderen Zelle) oder bis eine Eingabe in die Zelle erfolgt ist. Wir die Suche fortgesetzt, soll die Markierung ebenfalls verschwinden.
    Weiß jemand eine Lösung? Ich glaube, der entsprechende Code muss in den oben zitierten eingefügt werden. Nur wohin?
    Vielen Dank für Eure Mühen und schöne Grüße
    Jochen
    Anzeige
    ;

    Forumthreads zu verwandten Themen

    Anzeige
    Anzeige
    Anzeige
    Anzeige
    Anzeige
    Anzeige

    Infobox / Tutorial

    Gefundene Zellen farbig markieren in Excel


    Schritt-für-Schritt-Anleitung

    Um gefundene Zellen in Excel farbig zu markieren, kannst Du den folgenden VBA-Code verwenden. Dieser Code ergänzt die bestehende Funktionalität zur Suche in mehreren Tabellenblättern und sorgt dafür, dass die Zelle in Spalte B, die dem gefundenen Namen in Spalte A entspricht, farblich markiert wird.

    1. Öffne Deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.
    2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
    3. Kopiere den folgenden Code in das Modul:
    Public Sub SearchAllTables(Optional sBlattname$)
        Dim ws As Worksheet
        Dim c
        Dim firstAddress As String, sSearch
        Dim secAddress
        Dim GFound As Boolean
        Dim GWeiter As Boolean
        GWeiter = False
        GFound = False
    anf:
        If sBlattname = "" Then
            Set ws = ActiveSheet
        Else
            Set ws = ActiveWorkbook.Sheets(sBlattname)
            If ws.Visible <> xlSheetVisible Then
                If MsgBox("Blatt """ & sBlattname & """ ist zur Zeit ausgeblendet." _
                    & vbLf & vbLf & "Suche nicht möglich! Blatt jetzt einblenden?", _
                    vbInformation + vbYesNo, "Suche in Tabellenblatt") = vbNo Then
                    Exit Sub
                Else
                    ws.Visible = xlSheetVisible
                End If
            End If
        End If
        sSearch = InputBox("Suche" & " nach:", "Search In All Tables", sSearch)
        If sSearch = "" Then
            Exit Sub
        End If
    weiter:
        With ws.Cells
            Set c = .Find(sSearch, LookIn:=xlValues, lookat:=xlPart, MatchCase:=False)
            If Not c Is Nothing Then
                GFound = True
                ws.Select
                c.Select
                Selection.Offset(0, 1).Select
                firstAddress = c.Address
                ' Zelle in Spalte B farbig markieren
                ActiveCell.Interior.ColorIndex = 35 ' Lindgrün oder wähle eine andere Farbe
                If MsgBox("Weitersuchen?", vbQuestion + vbYesNo) = vbYes Then
                    Do
                        Set c = .FindNext(c)
                        secAddress = c.Address
                        If c.Address = firstAddress Then
                            Exit Do
                        End If
                        c.Select
                        Selection.Offset(0, 1).Select
                        ActiveCell.Interior.ColorIndex = 35 ' Markiere die neue Zelle
                        If MsgBox("Weitersuchen?", vbQuestion + vbYesNo) = vbNo Then
                            GWeiter = True
                            GoTo ende
                        End If
                    Loop While Not c Is Nothing And secAddress <> firstAddress
                Else
                    GWeiter = True
                    GoTo ende
                End If
            End If
        End With
    ende:
        If GFound = False Then
            If MsgBox("Suchwert nicht gefunden! Neue Suche?", vbInformation + vbYesNo) = vbYes Then
                GoTo anf:
            End If
        Else
            If GWeiter = False Then
                If MsgBox("Sie haben das Tabellenblatt durchsucht! Soll die Suche neu gestartet werden?", vbInformation + vbYesNo) = vbYes Then
                    GoTo weiter
                End If
            End If
        End If
    End Sub
    1. Schließe den VBA-Editor und kehre zu Excel zurück.
    2. Führe das Makro aus, um nach Namen in Spalte A zu suchen und die entsprechenden Zellen in Spalte B farbig zu markieren.

    Häufige Fehler und Lösungen

    • Fehler: „Suchwert nicht gefunden!“
      Lösung: Überprüfe die Schreibweise des Suchbegriffes und stelle sicher, dass Du in der richtigen Spalte suchst.

    • Fehler: Die Zelle in Spalte B wird nicht farbig markiert.
      Lösung: Stelle sicher, dass der Code korrekt in das Modul eingefügt wurde und dass Du die richtige Zellreferenz verwendest.


    Alternative Methoden

    Eine alternative Methode zur farblichen Markierung von Zellen ist die Verwendung von bedingter Formatierung. Diese Methode erfordert keinen VBA-Code und kann direkt in Excel eingestellt werden:

    1. Wähle die Zellen in Spalte B aus, die Du farbig markieren möchtest.
    2. Gehe zu Start > Bedingte Formatierung > Neue Regel.
    3. Wähle Formel zur Ermittlung der zu formatierenden Zellen verwenden.
    4. Gib die passende Formel ein, z.B. =A1="Suchwert" und wähle die gewünschte Formatierung.

    Praktische Beispiele

    1. Beispiel 1: Du suchst nach dem Namen „Max“ in Spalte A. Wenn der Name gefunden wird, wird die entsprechende Zelle in Spalte B von „Max“ in Lindgrün eingefärbt.
    2. Beispiel 2: Wenn Du eine neue Suche startest, wird die vorherige Markierung entfernt, sodass die Zelle in Spalte B nicht dauerhaft farbig bleibt.

    Tipps für Profis

    • Farbwahl: Experimentiere mit verschiedenen ColorIndex-Werten, um die beste Farbe für Deine Bedürfnisse zu finden.
    • Benutzerdefinierte Farben: Du kannst auch RGB-Farben verwenden, indem Du den Interior.Color-Befehl anpasst, z.B. ActiveCell.Interior.Color = RGB(144, 238, 144) für ein sanftes Grün.
    • Makros sichern: Überlege Dir, Deine Makros in einer separaten Datei zu sichern, um sie in anderen Projekten wiederverwenden zu können.

    FAQ: Häufige Fragen

    1. Wie kann ich den VBA-Code anpassen?
    Du kannst den Code anpassen, indem Du die gewünschten Farben und Zellreferenzen änderst. Achte darauf, dass Du den Code korrekt übernimmst.

    2. Funktioniert dieser Code in allen Excel-Versionen?
    Der Code sollte in den meisten modernen Excel-Versionen (z.B. Excel 2010 und später) funktionieren. Es kann jedoch Unterschiede in der Benutzeroberfläche geben.

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige