Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Zellen hervorheben

Forumthread: VBA Zellen hervorheben

VBA Zellen hervorheben
10.10.2002 21:44:24
Boris
Hallo Excellenzen,

wer kann mir (VBA Anfänger) folgenden Code (von Hans Herber) umschreiben:

Hier wird immer die gerade aktive Zelle farbig dargestellt, und, so glaube ich zumindest, die vorherige Zelle wieder in ihren Ursprungszustand gesetzt.

Ich möchte, hierauf aufbauend, dass nicht die aktive Zelle, sondern, ausgehend von der aktiven Zelle, die Zelle in Zeile 1 und die Zelle in Spalte 2 farbig angezeigt wird (z.B. aktive Zelle: D 10, dann soll farbig sein: D1 und B10).
Wichtig ist halt, dass bei erneutem Zellwechsel die Vorgängerzellen wieder ihren ursprünglichen Zustand (inklusive vorhandener bedingter Formate) erhalten.

Schon mal vielen Dank für die Hilfe!

Gruß Boris

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Uups, falscher Code
10.10.2002 21:46:42
Boris
Da haben sich in den Code doch noch 2 zeilen von mir eingeschlichen.

Der echte Hans Herber-Code:

Gruß Boris

Re: Uups, falscher Code
11.10.2002 06:58:56
Hajo_Zi
Hallo Boris

ich bewundere Dich für Dein Vorhaben, bei Zellmarkierung von meheren Zellen die Farbe auch wieder zurüchzusetzen. Ich habe nun auch schon Code entwickelt um einzelne Zellen hervorzuheben und wieder zurückzusetzen. Aber für mehere Zellen war mir der Aufwand zu Groß.

Du schreibst die Zellen sind mit bedingter Formatierun Formatiert, da bracht doch die Farbe nicht wieder zurückgesetzt werden.

Du brauchst doch nur von Deiner activen Zelle, nur noch Deine anderen Zellen wählen (Makrorecorder hilf bei der Syntax) und Farbe setzen.

Gruß Hajo

Anzeige
Re: Uups, falscher Code
11.10.2002 07:19:36
JürgenR
Hi Boris,

ich hoffe ich hab das richtig verstanden:

Um die Zellen mit bedingter Formatierung musst du dich nicht kümmern, da die Bedingte Formatierung erhalten bleibt.

Gruß
Jürgen

Re: Uups, falscher Code
11.10.2002 08:43:57
Boris
Hallo Jürgen, hallo Hajo,

danke für eure Antworten.
Der Code von Jürgen ist leider nicht ganz nach meiner Vorstellung, weil ja mit der Zeile

Cells.Interior.ColorIndex = xlNone

offensichtlich alle Hintergrundfarben gelöscht werden.
Meine Tabelle enthält aber sehr wohl Hintergrundfarben UND bedingte Formate etc.
Die Zellen sollen halt wieder in ihren Ursprungszustand gesetzt werden, als wär nichts gewesen...

Ich werd selbst auch weiterfummeln, aber vielleicht könnt ihr euch ja auch noch Gedanken machen...;-))

Danke und Gruß

Boris

Anzeige
Re: Uups, falscher Code
11.10.2002 10:56:34
Hajo_Zi
Hallo Boris

aus Deinem letzten Beitrag geht nun hervor das nicht alle Zellen mit Bedingter Formatierung eingestellt sind. Sondern welche auch von Hand???

Ich habe ja schon im ersten Beitrag geschrieben das es mir zu Aufwendig ist und das ich Deinen Mut für solche Aufgabe bewundere.

Es geht ja nur um 3 Zellen. Ich hätte mal folgenden Ansatz gewählt.

Die Zelladresse und Farben in ein 2 Dimensionales Array schreiben.

Bei Private Sub Worksheet_SelectionChange(ByVal Target As Range) als erstes die neuen auslesen und dann die alten zurücksetzen.

Für alle Tabellen und alle Zellen und zurücksetzen beim schließen habe ich es mal so gelöst. Vielleicht bekommst Du es umgebaut. Falls ja Poste es in diesen Beitrag, dann werde ich auch Benachrichtigt. Die Lösung würde mich schon intressieren.


In ein Modul
Option Explicit
Public OldColorIndex As Variant
Public OldRange As String
Public Register As String


in DieseArbeitsmappe
Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If OldRange <> "" Then ActiveSheet.Range(OldRange).Interior.ColorIndex = OldColorIndex
End Sub

Private Sub Workbook_Open()
    OldRange = ActiveCell.Address
    Register = ActiveSheet.Name
    OldColorIndex = ActiveCell.Interior.ColorIndex
    ActiveCell.Interior.ColorIndex = 3
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    OldRange = ActiveCell.Address
    OldColorIndex = ActiveCell.Interior.ColorIndex
    ActiveCell.Interior.ColorIndex = 3
    Register = ActiveSheet.Name
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    If OldRange <> "" Then Worksheets(Register).Range(OldRange).Interior.ColorIndex = OldColorIndex
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As ObjectByVal Target As Range)
'   Beim 1. Aufruf ist OldRange noch undefiniert
    If OldRange = "" Then
        OldRange = Target.Address
        OldColorIndex = Target.Interior.ColorIndex
'       Setze Hintergrundfarbe der aktiven Selection auf Rot
        Target.Interior.ColorIndex = 3
    Else
'       Setze alten Range auf alte Farbe
        If Range(OldRange).Interior.ColorIndex = 3 Then
            Range(OldRange).Interior.ColorIndex = OldColorIndex
        End If
        OldColorIndex = Target.Interior.ColorIndex
'       Merke mir aktuellen Adresse für nächsten Aufruf
        OldRange = Target.Address
'       Setze Hintergrundfarbe der aktiven Selection auf Rot
        Target.Interior.ColorIndex = 3
    End If
End Sub
 

     Code eingefügt mit Syntaxhighlighter 1.16

Gruß Hajo

Anzeige
Re: Uups, falscher Code
11.10.2002 14:41:43
Boris
Hallo Hajo,

dein Code funktioniert (wie auch von dir nicht anders zu erwarten...;-))
Die aktive Zelle wird in jedem Tabellenblatt rot markiert und beim Wechsel wieder in ihren alten Zustand versetzt.
Ich werde jetzt mal selbst ein bisschen probieren und gegebenenfalls - aufbauend auf deinem Code - eine neue Anfrage starten (falls ich es nicht hinbekomme).
Auf jeden Fall schon mal vielen Dank für Deine Mühe.
Falls der Thread bis zur endgültigen Lösung verschwunden sein sollte, werde ich dich über ein neues Posting informieren.

Gruß Boris

P.S.: Konnte erst jetzt antworten, weil heute den ganzen Tag GARTENARBEIT angesagt war (und noch ist...)

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zellen in Excel farbig hervorheben


Schritt-für-Schritt-Anleitung

Um die aktive Zelle in Excel mithilfe von VBA farbig hervorzuheben, kannst du den folgenden Code verwenden. Dieser Code markiert nicht nur die aktive Zelle, sondern auch die Zelle in Zeile 1 und die Zelle in Spalte 2, während er die vorherigen Zellen wieder in ihren ursprünglichen Zustand versetzt.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul ein:

    • Rechtsklick auf "VBAProject (DeinDateiname)" > Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:

    Dim OldColor As Long
    Dim OldCell As Range
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       If Not OldCell Is Nothing Then
           OldCell.Interior.ColorIndex = OldColor
       End If
    
       OldColor = Target.Interior.ColorIndex
       Set OldCell = Target
       Target.Interior.ColorIndex = 3 ' Rot
    
       ' Zelle in Zeile 1 und Spalte 2 hervorheben
       Cells(1, Target.Column).Interior.ColorIndex = 3 ' Zeile 1
       Cells(Target.Row, 2).Interior.ColorIndex = 3 ' Spalte 2
    End Sub
  4. Schließe den VBA-Editor und kehre zu deinem Excel-Dokument zurück.

  5. Teste den Code, indem du in verschiedene Zellen klickst. Die aktive Zelle wird rot markiert, ebenso die Zelle in Zeile 1 und in Spalte 2.


Häufige Fehler und Lösungen

  • Der Code funktioniert nicht: Stelle sicher, dass du den Code im richtigen Arbeitsblatt-Modul eingefügt hast. Gehe zu VBAProject > Microsoft Excel Objekte > (Dein Arbeitsblatt).

  • Die Farben setzen sich nicht zurück: Vergewissere dich, dass die Variable OldCell richtig gesetzt wird, und dass du die Hintergrundfarbe der vorherigen Zelle korrekt zurücksetzt.

  • Bedingte Formatierungen verschwinden: Wenn du die Hintergrundfarbe der Zelle änderst, kann dies die bedingte Formatierung beeinflussen. Achte darauf, den Code so zu gestalten, dass die bedingte Formatierung nicht gelöscht wird.


Alternative Methoden

Wenn du keine VBA-Programmierung verwenden möchtest, kannst du auch bedingte Formatierungen nutzen, um die aktive Zelle hervorzuheben. Hier ist eine einfache Methode:

  1. Wähle die Zellen aus, die du hervorheben möchtest.
  2. Gehe zu Start > Bedingte Formatierung > Neue Regel.
  3. Wähle "Formel zur Ermittlung der zu formatierenden Zellen verwenden" und gib folgende Formel ein:
    =ZELLE("Adresse")=ADRESSE(VERGLEICH(WAHR,ISTZAHL(A1:A100),0),SPALTE())
  4. Lege das Format fest (z.B. Hintergrundfarbe) und klicke auf "OK".

Praktische Beispiele

  1. Aktive Zelle farbig hervorheben: Verwende den oben genannten VBA-Code, um die aktive Zelle in Rot hervorzuheben.

  2. Eingabefelder hervorheben: Wenn du Eingabefelder in einer bestimmten Farbe hervorheben möchtest, kannst du dies mit bedingter Formatierung tun, indem du eine Regel für spezifische Werte erstellst.

  3. Hervorhebung der gesamten aktiven Zeile: Um die gesamte aktive Zeile hervorzuheben, kannst du den folgenden VBA-Code verwenden:

    Cells(Target.Row, 1).Resize(1, Columns.Count).Interior.ColorIndex = 3

Tipps für Profis

  • Nutze den Makrorecorder, um VBA-Code für häufige Aufgaben zu generieren. Dies kann dir helfen, die Syntax zu verstehen und eigene Anpassungen vorzunehmen.
  • Experimentiere mit verschiedenen ColorIndex-Werten, um unterschiedliche Farben für die Hervorhebung zu verwenden.
  • Beachte, dass du mit der Worksheet_SelectionChange-Methode die Reaktionsfähigkeit deines Arbeitsblatts optimierst, indem du nur bei einem tatsächlichen Zellwechsel eine Aktion ausführst.

FAQ: Häufige Fragen

1. Kann ich die aktive Zelle hervorheben ohne VBA? Ja, du kannst dies mit bedingter Formatierung erreichen, indem du eine Formel anwendest, die die aktive Zelle identifiziert.

2. Wie kann ich mehrere Zellen gleichzeitig hervorheben? Du kannst den VBA-Code anpassen, um mehrere Zellen zu markieren, indem du entsprechende Cells-Referenzen hinzufügst.

3. Was ist der Unterschied zwischen bedingter Formatierung und VBA? Bedingte Formatierungen sind einfach zu implementieren und erfordern kein Programmieren, während VBA dir mehr Flexibilität und Kontrolle über die Zellenverarbeitung gibt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige