Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1412to1416
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

prüfe ob Zellfarbe oder Schriftfarbe verändert wur

prüfe ob Zellfarbe oder Schriftfarbe verändert wur
05.03.2015 20:41:31
Peter
Hallo Zusammen
Wie kann ich überprüfen, ob die Zellfarbe oder Schriftfarbe in einer Zelle durch einen Benutzer verändert wurde.
Brauche dies für folgende Anwendung:
Sobald ein Benutzer einen Zellinhalt mit Delete löscht, wird sie rot, sobald er in eine leere Zelle einen Wert einfügt wird die Schrift rot.
Jetzt soll verhindert werden, dass der Benutzer die Schrift oder Hintergrundfarbe selber ändern kann. (nur in bestimmten Zellen - nicht grundsätzlich)
stehe im Moment auf dem Schlauch.
Danke für Eure Unterstützung.
Pepi

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Das sieht nach BedingtFormatierung aus, ...
05.03.2015 21:30:48
Luc:-?
…Pepi,
da müsste der Nutzer schon die Regeln ändern oder löschen, damit eine andere Farbe überhaupt sichtbar wird. Oder hast du eine Ereignisprozedur zum Färben verwendet? Dann könntest du da eine Alternative vorsehen.
Aber da du keine Info hierzu gegeben hast, wird dir wohl niemand wirklich helfen können.
Gruß, Luc :-?
Besser informiert mit …

AW: Das sieht nach BedingtFormatierung aus, ...
05.03.2015 22:50:40
Peter
Hallo Luc
Wenn der Benutzer einen Zellinhalt löscht, färbe ich mit einem Makro die Zelle rot. Die Frage ist, wie kann ich verhindern, dass der Benutzer die rote Farbe aus der Zelle entfernt und damit die Spur entfernt. Es geht hier um eine wichtige Angelegenheit, wo wir wissen müssen, wenn der Benutzer einen Zellinhalt verändert und dies wollten wir mit einfärben der Zelle machen.
Ich kann die Aufgabe auch anders formulieren: Wie kann ich feststellen, dass ein Benutzer eine Zellfarbe ändert oder löscht, die vorher rot war. mit Worksheet_SelectionChange() und Worksheet_Change() bring ich es nicht hin, da worksheet_change() nur bei Zelländerungen (Wert) nicht aber bei Farbänderungen reagiert.
Auch kann ich die Zelle (aus verschiedenen Gründen) nicht mit einem Passwort schützen, damit sie nach dem einfärben nicht mehr anders eingefärbt werden kann.
Ich hoffe, dass man so drauskommt

Anzeige
Eben, das ist ein Problem, denn das kannst du...
06.03.2015 02:29:10
Luc:-?
…aus den von dir genannten Gründen nicht per Makro korrigieren, Pepi,
außer du kontrollierst ständig die Zelle, ob sie noch rot ist, was die Bearbeitung deutlich verzögern würde.
Zwei andere Ideen:
1. Das Pgm stellt bei Workbook_Open alle rot gefärbten Zellen fest, notiert ihre Adressen (ggf m.BlattName). Dann kann der Nutzer während der Sitzung machen, was er will, das Pgm notiert die Löschungen in einer und die Text­Hinzu­fügungen meinet­halben in einer anderen Variablen. Wird die Datei geschlossen (Wb_BeforeClose) wdn die notierten Zellen wieder entsprechend eingefärbt, automatisch gespeichert und geschlossen. Dabei kann auch die Bildschirm­Aktualisierung aus- und erst unmittelbar vor dem Speichern wieder eingeschaltet wdn. Ggf kann die Mappe solange auch ganz ausgeblendet wdn, muss dann aber bei Wb_Open wieder eingeblendet wdn. Geht das nicht, kann man so auch mit der Bildschirm­Aktualisierung verfahren, obwohl ich glaube, dass die bei XlStart immer eingeschaltet wird. Allerdings muss das nicht für das Öffnen einer neuen Mappe in gleicher Sitzung gelten. Deshalb wäre es in solchen Fällen womöglich besser, gleich alles in ein AddIn mit eingerichtetem Klassenmodul der Application auszulagern, was nicht sonderlich schwer sein dürfte. Von dort aus können dann alle Datei- und Blatt­Aktionen in jeder geöffneten Mappe überwacht wdn.
Ggf kann man aber auch auf die rote Formatierung ganz verzichten, wenn man den Inhalt der Variablen an eine versteckte Stelle (ein AddIn wäre da ideal) oder direkt in ein Modul schreibt (ggf kryptisiert), das dann aber nicht geschützt sein darf, was ein Sicherheitsrisiko sein könnte.
Der Nutzer müsste dann schon sehr gewieft sein, um das unterlaufen zu können.
2. Man könnte mit dem Ereignismakro aber auch eine auf diesen Zellen vorhandene neutrale Bedingt­Formatierung „scharf machen“, d.h., die Regel verändern oder einen verborgenen Namen des Blattes oder der Mappe mit einer entsprd Konstante füllen, so dass die mit dem Wert dieses Namens vgld Regel erfüllt wird. Dann müsste der Nutzer schon die Regel entfernen oder ändern und das würde wiederum ein behandelbares Ereignis auslösen.
Morrn, Luc :-?

Anzeige
AW: Das sieht nach BedingtFormatierung aus, ...
07.03.2015 09:41:19
Peter
Hallo Zusammen
Herzlichen Dank für die vielen Tipps
Ich hab es nun folgendermassen gelöst und bin ganz zufrieden:
Mit "Worksheet_SelectionChange()" merke ich mir den Wert der Zelle vor der Aenderung. Wenn ein Wert verändert oder gelöscht wird, schreibe ich mittels "Worksheet_Change()" den alten und neuen Wert in ein ausgeblendetes Tabellenblatt. Eine Art Journal. So kann ich auch feststellen, wenn ein Wert wieder zurückgeändert wird (Originalzustand). Funktioniert grossartig - nochmals vielen Dank
Pepi

AW: prüfe ob Zellfarbe oder Schriftfarbe verändert wur
06.03.2015 17:43:17
KlausF
Hallo Peter,
ohne Makroprogrammierung würde ich das wie folgt lösen:
Benenne eine Zelle mit einem beliebigen Namen, z.B. Kontrolle (Evtl. auf einem ausgeblendeten Blatt.).
Verändere jetzt die Formeln der Bedingten Formatierung mit z.B.: =WENN(Kontrolle =1;Bedingte Formatierung)
Die Bedingte Formatierung wird also nur dann sichtbar wenn der Wert in der Zelle Kontrolle = 1 ist.
Kann man natürlich aushebeln, setzt aber Vorsatz beim User voraus und ist eine relativ einfache Lösung, da der
User ja erst einmal gar nichts von der Bedingten Formatierung mit bekommt ...
Gruß
Klaus

Anzeige
AW: einfache VBA-Lösung
06.03.2015 18:08:30
KlausF
Hallo Peter,
oder eine einfache narrensichere Lösung mit VBA:
Dupliziere die Arbeitsmappe und vergleiche nach getätigten Änderungen die gleichen Sheets
per Makro. Im Prinzip also das, was Du hast, mit einer nachträglichen Einfärbung der Zellen
(könnte auch mit einem ausgeblendetem Sheet-Duplikat in der gleichen Mappe ausgeführt werden)
Gruß
Klaus

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige