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

Forumthread: Füllfarbe bei Verlassen der Zelle zurücksetzen

Füllfarbe bei Verlassen der Zelle zurücksetzen
08.05.2019 09:31:07
Axel
Hallo zusammen,
ich möchte bei Klick in eine Zelle einer fest definierten Range, dass sich die Füllfarbe ändert und beim Verlassen der Zelle sich die vorherige Füllarbe wieder herstellt.
Dazu habe ich auch etwas gefunden, dass ich so aber nicht umsetzen kann.
Mit dem unten aufgeführten Makro ändert sich zwar die Füllfarbe beim Klick in die Zelle, aber beim Verlassen der Zelle wird nicht wieder die alte Färbung hergestell.
Ich erbitte eure Unterstützung und bedanke mich vorab.
Gruß
Axel
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Range bei dem eine Änderung etwas bewirken soll
Set changeRange = Range("B19:B30")
If Not Application.Intersect(changeRange, Target) Is Nothing Then
If Target.Interior.Color = RGB(242, 242, 242) Then
Target.Interior.Color = 65535
Else
Target.Interior.Color = RGB(242, 242, 242)
End If
End If
End Sub

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Füllfarbe bei Verlassen der Zelle zurücksetzen
08.05.2019 09:49:04
Daniel
Hi
mach das so:
diesen Code ins Modul des tabellenblatts.
er hinterlegt die aktive Zelle in einem Namen:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ThisWorkbook.Names.Add "aktiveZelle", ActiveCell
Application.ScreenUpdating = True
End Sub
richte dann für die betroffenen Zellen eine bedingte Formatierung mit dieser Formel als regel ein.
sie prüft ob die jeweilige Zelle der aktiven Zelle entspricht.
Über die Bedingte Formatierung bleibt die Originalformatierung erhalten und muss nicht wieder hergestellt werden, das macht Excel automatisch:
=ZELLE("adresse";A1)=ZELLE("adresse";aktiveZelle)

Gruß Daniel
Anzeige
AW: Füllfarbe bei Verlassen der Zelle zurücksetzen
08.05.2019 10:04:32
Axel
Hallo Daniel,
danke für Deine Antwort.
Ich habe folgendes gemacht:
- mein Makro rausgeschmissen
- Dein Makro ins Modul des Tabellenblatts eingefügt
- bedingte Formatierung für die betroffenen Zellen mit Deiner Formel eingerichtet.
Ergebnis:
Wenn ich die betroffenen Zellen anklicke, werden sie nicht eingefärbt (was mein Makro vorher gemacht hatte) und auch sonst passiert nichts mit den formatierten Zellen.
Ich kann auch mein Makro nicht zusätzlich drin lassen, weil es dann einen Konflikt gibt.
Mein Makro hat ja schon die Zellen, die ich in der Range definiert hatte, korrekt eingefärbt. Wenn man dann aus der eingefärbten Zelle rausgeht, bleibt die Zelle eingefärbt und die nächste angeklickte Zelle aus der definierten Range wird auch eingefärbt. Wenn ich dann auf die zuvor eingefärbte Zelle klicke, wird wieder die alte Füllfarbe hergestellt. Ich will nur diesen zusätzlichen Klick nicht machen müssen, sondern, dass die Zelle schon beim Verlassen wieder zur alten Farbe wechselt.
Gruß
Axel
Anzeige
AW: Füllfarbe bei Verlassen der Zelle zurücksetzen
08.05.2019 10:39:06
Daniel
Hi
hast du bedacht, dass du Zelladresse in der Regel "A1" noch ggf an deinen tatsächlichen Zellbereich anpassen musst?
dh wenn die Regel für B19:B30 gelten soll und du beim Einrichten der Bedingten Formatierung diese Zellen markiert hast, musst du das "A1" natürlich durch "B19" ersetzen.
Gruß Daniel
Anzeige
AW: Füllfarbe bei Verlassen der Zelle zurücksetzen
08.05.2019 10:15:41
Torsten
Hallo Axel,
versuch es mal so:
in ein Modul:
Option Explicit
Public OldColorIndex As Variant
Public OldRange As String
in die Tabelle:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
'   Beim 1. Aufruf ist OldRange noch undefiniert
If OldRange = "" Then
OldRange = Target.Address
OldColorIndex = Target.Interior.ColorIndex
'       Setze Hintergrundfarbe der aktiven Selection
Target.Interior.Color = RGB(242, 242, 242)
Else
'       Setze alten Range auf alte Farbe
If Range(OldRange).Interior.Color = RGB(242, 242, 242) 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
Target.Interior.Color = RGB(242, 242, 242)
End If
End Sub
Gruss Torsten
Anzeige
AW: Füllfarbe bei Verlassen der Zelle zurücksetzen
08.05.2019 10:23:01
Torsten
sorry, hatte noch vergessen, deine Range einzugrenzen:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Set changeRange = Range("B19:B30")
If Not Application.Intersect(changeRange, Target) Is Nothing Then
'   Beim 1. Aufruf ist OldRange noch undefiniert
If OldRange = "" Then
OldRange = Target.Address
OldColorIndex = Target.Interior.ColorIndex
'       Setze Hintergrundfarbe der aktiven Selection
Target.Interior.Color = RGB(242, 242, 242)
Else
'       Setze alten Range auf alte Farbe
If Range(OldRange).Interior.Color = RGB(242, 242, 242) 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
Target.Interior.Color = RGB(242, 242, 242)
End If
Else
Exit Sub
End If
End Sub

Anzeige
AW: Füllfarbe bei Verlassen der Zelle zurücksetzen
08.05.2019 10:24:26
Axel
Hallo Thorsten,
vielen Dank.
Die Zelle hat bereits eine Graufärbung (.Interior.Color = RGB(242, 242, 242), die nach Verlassen der Zelle wieder hergestellt werden soll.
An welcher Stelle wird bei Deinem Code denn die Zelle gelb (.INTERIOR.COLOR= 65535) beim Klick in die Zelle eingefärbt?
Ich kann doch mit meinem Code gar nicht so weit weg vom Ziel sein, nur dieses "beim Verlassen der Zelle" muss noch eingefügt werden. Mit "Else" funktioniert das nicht.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Range bei dem eine Änderung etwas bewirken soll
Set changeRange = Range("B19:B30")
If Not Application.Intersect(changeRange, Target) Is Nothing Then
If Target.Interior.Color = RGB(242, 242, 242) Then
Target.Interior.Color = 65535
Else
Target.Interior.Color = RGB(242, 242, 242)
End If
End If
End Sub
Gruß
Axel
Anzeige
AW: Füllfarbe bei Verlassen der Zelle zurücksetzen
08.05.2019 10:35:05
Torsten
Sorry, das war nicht ganz klar, dass die Zellen urspruenglich grau sind. Das gelb habe ich glatt uebersehen. Also hier ein neuer Versuch:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Set changeRange = Range("B19:B30")
changeRange.Interior.Color = RGB(242, 242, 242)
If Not Application.Intersect(changeRange, Target) Is Nothing Then
'   Beim 1. Aufruf ist OldRange noch undefiniert
If OldRange = "" Then
OldRange = Target.Address
OldColor = Target.Interior.Color
'       Setze Hintergrundfarbe der aktiven Selection
Target.Interior.Color = 65535
Else
'       Setze alten Range auf alte Farbe
If Range(OldRange).Interior.Color = 65535 Then
Range(OldRange).Interior.Color = OldColor
End If
OldColor = Target.Interior.Color
'       Merke mir aktuellen Adresse für nächsten Aufruf
OldRange = Target.Address
'       Setze Hintergrundfarbe der aktiven Selection
Target.Interior.Color = 65535
End If
Else
Exit Sub
End If
End Sub
Gruss Torsten
Anzeige
gelöst
08.05.2019 10:41:31
Axel
Hi Thorsten,
klasse! So funktioniert es einwandfrei!
Vielen Dank, wie immer tolles Forum, schnelle kompetente Lösung.
Weiter so!
Axel
gerne...
08.05.2019 11:24:20
Torsten
und danke fuer die Rueckmeldung
;
Anzeige
Anzeige

Infobox / Tutorial

Füllfarbe bei Verlassen der Zelle zurücksetzen


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Modul erstellen: Klicke mit der rechten Maustaste auf das gewünschte Tabellenblatt im Projektfenster und wähle „Code anzeigen“.

  3. Füge den folgenden Code ein:

    Option Explicit
    Public OldColor As Variant
    Public OldRange As String
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
       Set changeRange = Range("B19:B30")
       If Not Application.Intersect(changeRange, Target) Is Nothing Then
           If OldRange = "" Then
               OldRange = Target.Address
               OldColor = Target.Interior.Color
               Target.Interior.Color = RGB(255, 255, 0) ' Gelb
           Else
               If Range(OldRange).Interior.Color = RGB(255, 255, 0) Then
                   Range(OldRange).Interior.Color = OldColor
               End If
               OldColor = Target.Interior.Color
               OldRange = Target.Address
               Target.Interior.Color = RGB(255, 255, 0) ' Gelb
           End If
       Else
           Exit Sub
       End If
    End Sub
  4. Anpassen des Zellbereichs: Stelle sicher, dass der Zellbereich (B19:B30) deinem gewünschten Bereich entspricht.

  5. Speichern und Testen: Speichere die Änderungen und teste das Verhalten der Zellen.


Häufige Fehler und Lösungen

  • Problem: Die Zellen färben sich nicht.

    • Lösung: Überprüfe, ob das Makro im richtigen Modul eingefügt wurde und ob der Zellbereich korrekt definiert ist.
  • Problem: Die ursprüngliche Füllfarbe wird nicht wiederhergestellt.

    • Lösung: Stelle sicher, dass die Bedingte Formatierung korrekt eingerichtet ist und die Formel auf die richtige Zelladresse verweist.

Alternative Methoden

Eine alternative Methode ist die Nutzung der Bedingten Formatierung in Excel, um die Füllfarbe zu steuern. Du kannst eine Regel erstellen, die die Formatierung auf Basis der aktiven Zelle anwendet. Gehe dazu wie folgt vor:

  1. Markiere den gewünschten Zellbereich.
  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";B19)=ZELLE("adresse";aktiveZelle)

Dies ermöglicht es, die Füllfarbe basierend auf der aktiven Zelle zu ändern, ohne ein Makro zu verwenden.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du den Füllfarbenwechsel bei aktiven Zellen umsetzen kannst:

  • Wenn du in eine Zelle von B19 bis B30 klickst, wird sie gelb, und beim Verlassen der Zelle wird die ursprüngliche Füllfarbe wiederhergestellt.

Du kannst die RGB-Werte in den Makros anpassen, um verschiedene Farben zu verwenden.


Tipps für Profis

  • Verwendung von Excel Shortcuts: Nutze CTRL + Z, um Änderungen rückgängig zu machen, falls etwas schiefgeht.
  • Rahmenfarbe ändern: Du kannst im VBA-Code die Rahmenfarbe der aktiven Zelle ändern, indem du Target.Borders.LineStyle = xlContinuous hinzufügst.
  • Makros als Excel-Shortcuts: Du kannst auch Excel-Shortcuts für deine Makros erstellen, um den Zugriff zu erleichtern.

FAQ: Häufige Fragen

1. Kann ich die Füllfarbe auch mit einem Shortcut ändern?
Ja, du kannst ein Makro erstellen und ihm einen Shortcut zuweisen, um die Füllfarbe schnell zu ändern.

2. Was ist der Unterschied zwischen der Verwendung von Makros und bedingter Formatierung?
Makros bieten mehr Flexibilität und Kontrolle, während die bedingte Formatierung einfacher einzurichten ist und keine Programmierkenntnisse erfordert.

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