Excel - durch ein Makro aktive Zelle färben?
Guten Tag zusammen,
wie oben schon beschrieben benötige ich ein Makro, das aktive Zellen in einer Hellen gut zu erkennenden Farbe zb. Gelb einfärbt. Die Einfärbung sollte aber wieder verschwinden sobald eine andere Zelle ausgewählt wird. Die neu ausgewählte Zelle sollte sich aber wieder einfärben usw... Der Hintergrund ist der, dass ich sehr viel mit Listen arbeite, die sehr unübersichtlich sind.
Ich habe schon Makros im Internet gefunden von denen leider keines funktioniert. Ich arbeite mit Excel2013
Vielen Dank im Voraus
2 Antworten
Option Explicit
Dim rngVorher As Range
Dim colVorher As Integer
Private Sub Worksheet_Deactivate()
If Not rngVorher Is Nothing Then rngVorher.Interior.ColorIndex = colVorher
Set rngVorher = Nothing
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Not rngVorher Is Nothing Then rngVorher.Interior.ColorIndex = colVorher
colVorher = Target.Interior.ColorIndex
Target.Interior.ColorIndex = 6 'Hintergrund Gelb
Set rngVorher = Target
End Sub
Quelle: http://www.office-loesung.de/ftopic11718_0_0_asc.php
Habe es eben unter Excel 2013 getestet, funktioniert einwandfrei.
Das muss jeweiligen Tabellenblatt abgelegt werden, nicht in ein Modul
Wie Ninombre richtig schreibt, muss das ins Tabellenblatt.
Reiter Entwicklertools -> Visual Basic -> Container Microsoft Excel Objekte aufklappen -> Doppelklick auf eine Tabelle -> Strg + V
Das musst du dann leider für jede Tabelle machen.
Habe es gefunden SUPER!
Jetzt noch die Frage. Wenn ich die Liste abspeicher und schließe dann bleibt die Farbe leider erhalten. Gibt es eine Möglichkeit das zu Verhindern?
Wenn du folgendes in DieseArbeitsmappe kopierst (nicht in eine der Tabellen) werden alle aktuell markierten Zellen wieder auf "Keine Füllfarbe" gesetzt, wenn du Excel schließt.
Wenn du in deiner Tabelle vorher schon eine Füllfarbe hattest und die wiederhergestellt brauchst, muss ich mir noch etwas überlegen.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim sht As Worksheet, csheet As Worksheet
Application.ScreenUpdating = False
Set csheet = ActiveSheet
For Each sht In ActiveWorkbook.Worksheets
If sht.Visible Then
ActiveCell.Interior.ColorIndex = 0
End If
Next sht
csheet.Activate
Application.ScreenUpdating = True
End Sub
Ich bin mir nicht sicher, jedoch denke ich, dass du das genau so auch mit "Bedingte Formatierung" realisieren könntest.
Beispiel: wenn in Zelle A10 Wert kleiner/gleich O ist dann Farbe rot.
Wie hast du es denn in das Modul eingefügt?
Wenn ich es einfüge, Speicher und es dann im Excel ausführen will dann kommt einfach nichts :(
Entweder füge ich es komplett falsch ein (was aber nicht sein kann denn andere Makros funktionieren)
Oder kann es vlt daran liegen, dass ich mehrere Tabellen in der Datei habe?