Clever-Excel-Forum

Normale Version: Aktive Zeile und Zelle farbig hervorheben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen, 

ich habe ein Problem wofür ich leider keine Lösung finde. Ich hoffe es kann mir jemand aus dem Forum helfen. Danke schon mal im Voraus dafür!!!

Ich habe mir eine Tabelle erstellt mit verschieden farbigen Zeilen. In diesen Zeilen gibt es auch noch vereinzelte Zellen die eine andere Farbe haben als der Rest der entsprechenden Zeile. Zur Erleichterung und Übersichtlichkeit wird mit dem Programm folgendes durchgeführt:

Wenn in Zeile 1 in den Spalten A, B, C, D usw. etwas eingetragen ist und in Spalte A ab Zeile 2 etwas eingetragen ist, dann wird die Zeile mit einer bestimmten Farbe (jetzt blau) markiert und die aktive Zelle hat dann eine andere Farbe (jetzt Ocker). Die Schrift in der Zeile wird „fett –gelb“ 

Die Markierung erfolgt nur so weit, wie fortlaufend in der Zeile 1 von Spalte A bis Spalte … und Spalte A von Zeile 2 bis Zeile… geschrieben ist. Es darf keine Unterbrechung dazwischen sein. 

Meine Probleme sind nun folgende:

1. Ist die Zeile weiß, dann ist alles schön. Habe ich aber spezielle Farben (dunkleres grün oder weinrot), dann wird die Farbe anders, nachdem ich die Zeile markiert habe und diese wieder verlasse. >> Hier soll die gewählte Farbe wieder sichtbar sein.

2. Befindet sich in der Zeile eine Zelle mit einer anderen farbigen Markierung, dann wird diese überfärbt. >> Dies soll nicht so sein. Ich möchte die farbig markierte Zelle wieder sehen, nachdem ich die Zeile verlassen habe.

3. Klickt man zuerst auf die anders farbig markierte Zelle in der entsprechenden Zeile, dann wird diese Farbe angenommen, wenn ich diese Zeile verlasse. 

Die Zeilen und Spalten sollen immer wieder so aussehen, wie vor der Markierung. 




Code:
Dim farbe_letzte_reihe_geändert As Boolean

Dim eee_save As Integer
Dim originale_Hintergrundfarbe_save As Integer
Dim spaltenanzahl As Integer
Dim zeilenanzahl As Integer

Private Sub Workbook_BeforeClose(Cancel As Boolean)
‘Bevor Tabelle geschlossen wird muss die letzte Markierung auf Originalzustand eingestellt werden
If farbe_letzte_reihe_geändert = True Then
‘MsgBox "test"
Range(Cells(eee_save, 1), Cells(eee_save, spaltenanzahl)).Interior.ColorIndex = originale_Hintergrundfarbe_save ‘alte Hintergrundfarbe
Range(Cells(eee_save, 1), Cells(eee_save, spaltenanzahl)).Font.ColorIndex = 0 ‘Schriftfarbe der aktiven Reihe
‘Range(Cells(eee_save, 1), Cells(eee_save, spaltenanzahl)).Font.Bold = False ‘Fettschrift ausschalten
End If

farbe_letzte_reihe_geändert = False
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Tabellenblatt As Object, ByVal Target As Excel.Range)
‘Erkenne wieviele Spalten in Reihe 1 beschrieben sind, so lang wird dann der Markierungsbalken
spaltenanzahl = 2
Do Until Cells(1, spaltenanzahl).Value = ""
spaltenanzahl = spaltenanzahl + 1
Loop
spaltenanzahl = spaltenanzahl - 1

‘Erkenne wieviele Zeilen in Spalte A beschrieben sind, so lang wird dann der Markierungsbalken
zeilenanzahl = 2
Do Until Cells(zeilenanzahl, 1).Value = ""
zeilenanzahl = zeilenanzahl + 1
Loop
‘--------------------------------------------

eee = ActiveCell.Row ‘Variable für aktive Reihe
fff = ActiveCell.Column ‘Variable für aktive Spalte

If eee > 1 And eee < zeilenanzahl Then ‘nur beschriebene Reihen bearbeiten(aaa ist letzte beschriebene Reihe siehe Makro1)


‘Wenn sich NICHT die aktuelle Reihe sondern nur die Spalte geändert hat
If eee = eee_save Then
Range(Cells(eee, 1), Cells(eee, spaltenanzahl)).Interior.ColorIndex = 41 ‘Hintergrundfarbe der aktiven Reihe
If fff <= spaltenanzahl Then Cells(eee, fff).Interior.ColorIndex = 44 ‘Hintergrundfarbe der aktiven Zelle
Exit Sub
End If

‘färbe vorhergehende Reihe mit gespeicherter Hintergrundfarbe
If farbe_letzte_reihe_geändert = True Then
Range(Cells(eee_save, 1), Cells(eee_save, spaltenanzahl)).Interior.ColorIndex = originale_Hintergrundfarbe_save ‘alte Hintergrundfarbe
Range(Cells(eee_save, 1), Cells(eee_save, spaltenanzahl)).Font.ColorIndex = 0 ‘Schriftfarbe der aktiven Reihe
Range(Cells(eee_save, 1), Cells(eee_save, spaltenanzahl)).Font.Bold = False
End If

‘originale Hintergrundfarbe speichern, bevor sie geändert wird
originale_Hintergrundfarbe_save = Cells(eee, fff).Interior.ColorIndex

‘Ändere Farbe der Zelle in der aktiven Reihe
Range(Cells(eee, 1), Cells(eee, spaltenanzahl)).Interior.ColorIndex = 41 ‘Hintergrundfarbe der aktiven Reihe
Range(Cells(eee, 1), Cells(eee, spaltenanzahl)).Font.ColorIndex = 6 ‘Schriftfarbe der aktiven Reihe
‘Range(Cells(eee, 1), Cells(eee, spaltenanzahl)).Font.Bold = True ‘Schrift Fett einschalten
If fff <= spaltenanzahl Then Cells(eee, fff).Interior.ColorIndex = 45 ‘Farbe der aktiven Zelle

farbe_letzte_reihe_geändert = True
‘MsgBox eee_save & " " & gestartet & " " & originale_Hintergrundfarbe_save
Else
‘falls Cursor außerhalb des Bereichs kommt, stelle an letzter markierten Reihe originalfarbe her
If farbe_letzte_reihe_geändert = True Then
Range(Cells(eee_save, 1), Cells(eee_save, spaltenanzahl)).Interior.ColorIndex = originale_Hintergrundfarbe_save ‘alte Hintergrundfarbe
Range(Cells(eee_save, 1), Cells(eee_save, spaltenanzahl)).Font.ColorIndex = 0 ‘Schriftfarbe der aktiven Reihe
‘Range(Cells(eee_save, 1), Cells(eee_save, spaltenanzahl)).Font.Bold = False ‘Fettschrift ausschalten
End If

farbe_letzte_reihe_geändert = False

End If
eee_save = eee ‘alte Reihenzahl gespeichert ‘aktuelle Zeile zwischenspeichern
End Sub


VG und Danke
Frank
Hallo Frank,

man könnte zum Markieren
- nur die Zellen einfärben, die noch keine Farbe haben
- vor dem umfärben die Farben sichern und hinterher wiederherstellen
- statt der Zellfarbe Ränder nehmen
- statt der Zellfarbe Objekte über die Zellen legen,
Hallo,

Excel ist eine Tabellenkalkulation, kein Tuschkasten. Wozu soll diese Färberei gut sein?