Excel - durch ein Makro aktive Zelle färben?

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.

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?

0
@Johannes9519

Das muss jeweiligen Tabellenblatt abgelegt werden, nicht in ein Modul

1
@Johannes9519

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.

1
@Hyp3rn0v4

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?

0
@Johannes9519

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
0

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.

Was möchtest Du wissen?