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

Farbänderung bei Blattschutz

Forumthread: Farbänderung bei Blattschutz

Farbänderung bei Blattschutz
26.11.2003 09:39:09
Marco
Hey Checker :-))
Ich habe mit dem Eintrag:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.EnableAutoFilter = True
ActiveSheet.Protect contents:=True, userInterfaceOnly:=True
End Sub

meine Tabellenblätter geschützt, um weiterhin auch bestimmte Zellen ändern zu können. Nun sollen aber in freigegebenen Zellen auch die Farben jederzeit geändert werden können (für Statusanzeige). Das geht so ja nicht :-/
Hat einer von Euch eine "Formel" für mich, wie ich trotz Blattschutz die Füllfarben ändern kann???
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Farbänderung bei Blattschutz
26.11.2003 09:46:29
GerdW
geht ohne den Blattschutz zeitweilig aufzuheben nicht.

Gerd
AW: Farbänderung bei Blattschutz
26.11.2003 09:48:26
Matthias G
Hallo Marco,
So differenziert kann man den Blattschutz erst ab Excel XP einstellen (Blatt schützen, aber Zellformatierung erlauben).
Für Excel 2000 müsstest eine eigene Symbolleiste oder Schaltflächen erstellen, mit denen Du dann die Hintergrundfarbe ändern könntest:

Private Sub CommandButton1_Click()
Selection.Interior.ColorIndex = 3 'rot
End Sub


Gruß,
Matthias
Anzeige
AW: Farbänderung bei Blattschutz
26.11.2003 13:57:25
Marco
Hai Matthias... ich hab deinen Code in meinen versucht einzubauen:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.EnableAutoFilter = True
ActiveSheet.Protect contents:=True, userInterfaceOnly:=True
' CommandButton1_Click()
Selection.Interior.ColorIndex = 3 'rot
End Sub

Das hat auch funktioniert, DANKE.
Aber eine Farbe reicht ja nun nicht. Ich habe oben in meiner Tabelle eine Legende mit den
vorhandenen Farben. Kann man da was bauen, indem man das farbige Feld anklickt und damit
die Auswahl für die gewünschte Farbe trifft?
Für alle Mühen...besten Dank!!! Euer Marco
Anzeige
AW: Farbänderung bei Blattschutz
26.11.2003 21:16:32
Matthias G
Hallo Marco,
ich habe was für Dich:
Public old As Range

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'Abfrage: Rechtsklick auf Legende? dann gemerkte Selektion einfärben
If Target.Row = 1 And Target.Column < 8 Then
Application.EnableEvents = False
old.Interior.ColorIndex = Target.Interior.ColorIndex
old.Select
Application.EnableEvents = True
Cancel = True
End If
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Abfrage: KEIN klick auf Legende? dann Selektion merken
If Not (Target.Row = 1 And Target.Column < 8) Then
Set old = Target
End If
End Sub

Diesen Code musst Du in das Codemodul der Tabelle kopieren (nicht in ein normales Modul!).
Ein RECHTSklick auf die Legende (mit der Abfrage im Beispiel hier im Bereich A1:G1) färbt die vorher ausgewählte Zelle/den Zellbereich in der angeklickten Farbe.

Würde mich sehr über eine Rückmeldung freuen!

Gruß,
Matthias
Anzeige
AW: Farbänderung bei Blattschutz
27.11.2003 08:30:29
Marco
Moin Moin
Matthias

Ich habe Deinen Code ausprobiert, so wie du Ihn "gebaut" hast.
(Hab eine leere Tabelle mit einer Legende im Bereich A1:G1 genommen)
Das hat aber nicht ganz funktioniert -> Fehlermeldung: bei old.Interior.ColorIndex = Target.Interior.ColorIndex -> Object erforderlich. Da ich hier in der Firma keine Hilfe-
Datei zur Verfügung habe kann ich mit Fehlermeldungen sämtlicher Art nichts anfangen und so nur rumprobieren.
Hab z.B. versucht den Bereich A1:G1 in H3:H8 zu ändern mit:
If Target.Row = < 9 And Target.Column 8 Then ... und andere Dinge zu kombinieren.
Leider Ohne Erfolg :´-(( ... Ich geb aber nicht auf ):-[|]

Gruß @ all
Anzeige
AW: Farbänderung bei Blattschutz
27.11.2003 10:26:31
Matthias G
Hallo Marco,
Du hast wohl die erste Zeile vergessen:

Public old As Range

Ich hoffe, das ist alles, denn bei mir klappt es einwandfrei.

Viel Erfolg!
Matthias
AW: Farbänderung bei Blattschutz
27.11.2003 12:07:51
Marco
Ich muß schon wieder nerven :-)
Hab hier auch wieder rumprobiert und muß LEIDER sagen, dass es auch mit der ersten Zeile
nicht klappt. Bei einer Kollegin ( Sie hat Excel XP ) geht´s einwandfrei.
Bei mir passiert garnichts :-/
Gibt es nicht "einfach" einen Code, um die nicht geschützten Zellen für eine Format/Farbänderung freizuschalten???
( Wobei die Idee mit dem anklicken der Legende eigentlich besser ist. Nur mein Wissen reicht einfach nicht aus und vergleichbare Beispiele habe ich im Forum auch nicht entdeckt ).

Gruß Marco
Anzeige
AW: Farbänderung bei Blattschutz
27.11.2003 18:12:54
Matthias G
Hallo Marco,
der Fehler kommt dann vor, wenn als erste Auswahländerung auf die Legende geklickt wird. Dann ist die Variable "old" noch nicht definiert. Sie wird ja nur festgesetzt, wenn auf einen Bereich NICHT in der Legende geklickt wird.
Ich hab diesen Fehler mal mit fogendem Code abgefangen:

On Error Resume Next
old.Interior.ColorIndex = Target.Interior.ColorIndex
old.Select
On Error GoTo 0

(Der andere Code wie gehabt.)
Das Problem war auch, wenn der Fehler einmal aufgetaucht ist, stand Application.Enable auf False, d.h. die Ereignisprozeduren waren fortan abgeschaltet. (Beim Neustart von Excel steht die Eingenschaft automatisch wieder auf True.)

Nochmals viel Glück,
Matthias
Anzeige
AW: Farbänderung bei Blattschutz
28.11.2003 07:09:39
Marco
Es klappt...klasse!!!
Tausend Dank für Deine Hilfe. Ich wünsch Dir noch alles Gute.

Gruß Marco
AW: Danke für die Rückmeldung! - o.T.
28.11.2003 08:16:29
Matthias G
-
;
Anzeige

Infobox / Tutorial

Farbänderung bei Blattschutz in Excel


Schritt-für-Schritt-Anleitung

  1. Vorbereitung: Stelle sicher, dass du eine Excel-Version verwendest, die den Blattschutz differenziert, wie Excel XP oder neuer.

  2. Blattschutz aktivieren: Füge den folgenden Code in das Codemodul des jeweiligen Arbeitsblatts ein:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       ActiveSheet.EnableAutoFilter = True
       ActiveSheet.Protect contents:=True, userInterfaceOnly:=True
    End Sub
  3. Farbänderung ermöglichen: Um die Füllfarbe in ungeschützten Zellen zu ändern, nutze diesen Code:

    Private Sub CommandButton1_Click()
       Selection.Interior.ColorIndex = 3 'rot
    End Sub
  4. Rechtsklick auf Legende: Um die Auswahl von Farben zu ermöglichen, verwende diesen Code:

    Public old As Range
    
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
       If Target.Row = 1 And Target.Column < 8 Then
           Application.EnableEvents = False
           old.Interior.ColorIndex = Target.Interior.ColorIndex
           old.Select
           Application.EnableEvents = True
           Cancel = True
       End If
    End Sub
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       If Not (Target.Row = 1 And Target.Column < 8) Then
           Set old = Target
       End If
    End Sub
  5. Testen: Teste die Funktionalität, indem du auf die Legende (z.B. A1:G1) rechtsklickst und die Farbe auf eine andere Zelle überträgst.


Häufige Fehler und Lösungen

  • Fehlermeldung "Object erforderlich": Dieser Fehler tritt auf, wenn die Variable "old" nicht definiert ist. Stelle sicher, dass du die Zeile Public old As Range am Anfang des Codes eingefügt hast.

  • Nichts passiert bei der Farbauswahl: Wenn die erste Auswahl auf die Legende erfolgt, wird die Variable "old" nicht gesetzt. Um dies zu beheben, füge den folgenden Code hinzu:

    On Error Resume Next
    old.Interior.ColorIndex = Target.Interior.ColorIndex
    old.Select
    On Error GoTo 0

Alternative Methoden

Falls du eine einfachere Lösung suchst, kannst du auch die Zellenformatierung in den Blattschutzoptionen anpassen. Gehe zu:

  1. Überprüfen des Blattschutzes: Wähle "Blatt schützen" und aktiviere die Option "Zellformatierungen erlauben". So kannst du die Füllfarbe in geschützten Bereichen ändern.

  2. Symbolleisten nutzen: In Excel 2000 musst du eventuell eigene Symbolleisten oder Schaltflächen erstellen, um die Hintergrundfarbe zu ändern.


Praktische Beispiele

  • Farbe für Statusanzeigen: Verwende die Legende in der ersten Zeile, um verschiedene Status (z.B. Grün für "OK", Rot für "Fehler") darzustellen und klicke mit der rechten Maustaste, um die Auswahl zu ändern.

  • Zellbereich anpassen: Du kannst den Bereich für die Legende anpassen, indem du die Bedingung in If Target.Row = 1 And Target.Column < 8 modifizierst, um beispielsweise auf A1:F1 zuzugreifen.


Tipps für Profis

  • Ereignisprozeduren deaktivieren: Wenn du mehrere Änderungen vornimmst, kannst du Application.EnableEvents = False verwenden, um zu verhindern, dass die Prozeduren bei jeder Änderung ausgelöst werden.

  • Kombination von Farben: Experimentiere mit verschiedenen ColorIndex-Werten, um eine Palette von Farben für verschiedene Status anzuzeigen.


FAQ: Häufige Fragen

1. Frage
Kann ich die Farben in geschützten Zellen ändern?
Antwort: Ja, jedoch musst du den Blattschutz temporär aufheben oder die Zellformatierung in den Blattschutzoptionen erlauben.

2. Frage
Welche Excel-Version benötige ich für diese Funktionalität?
Antwort: Die beschriebenen Funktionen sind ab Excel XP oder neuer verfügbar. In älteren Versionen wie Excel 2000 gibt es Einschränkungen.

3. Frage
Was tun, wenn der Code nicht funktioniert?
Antwort: Überprüfe, ob du den Code im richtigen Codemodul eingefügt hast und ob alle erforderlichen Variablen definiert sind.

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