Schreibgeschützt; farbige Zellen nicht drucken

Bild

Betrifft: Schreibgeschützt; farbige Zellen nicht drucken
von: Falco
Geschrieben am: 21.09.2015 15:09:35

Hallo,
ich habe folgendes Problem:
Es sollen von Mitarbeitern diverse Zellen ausgefüllt werden, diese sind farblich markiert. Beim Drucken und speichern (speziell pdf) soll diese farbliche Markierung wieder weg sein. Zudem soll das Arbeitsblatt bzw. die Arbeitsmappe schreibgeschützt sein damit niemand etwas verändern kann.
Die farbigen Zellen bestehen aus teils verbundenen, teils als Tabellenform oder einzeln.
Mein bisheriger Ansatz mit zwei Ereignisprozeduren:
Zuerst benenne ich den Bereich, der hervorgehoben werden soll mit dem Namen "farbig". Danach _ weis ich "DieseArbeitsmappe" den folgenden Code zu:


Private Sub Workbook_BeforePrint(Cancel As Boolean)
Worksheets("Tabelle3").Range("farbig").Interior.ColorIndex = xlNone
Worksheets("Tabelle3").Range("farbig2").Interior.ColorIndex = xlNone
.
.
.
End Sub

Dem betroffenen Tabellenblatt habe ich noch folgenden Code hinzugefügt:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Worksheets("Tabelle3").Range("farbig").Interior.ColorIndex = 3
Worksheets("Tabelle3").Range("farbig2").Interior.ColorIndex = 3
.
.
.
End Sub

Das funktioniert soweit alles gut ohne den Schreibschutz, mit hingegen kommt immer:
Laufzeitfehler 1004; Anwendungs- oder objektdefinierter Fehler
Ich habe auch schon herausgefunden das der Fehler aufgrund der fehlenden Zugriffsrechten des Makros entsteht. Jedoch fehlt mir das wissen dies nun zu vollenden.
MfG
Falco

Bild

Betrifft: Worksheets("Tabelle3").UnProtect "Passwort" owT
von: Rudi Maintaire
Geschrieben am: 21.09.2015 15:17:09


Bild

Betrifft: AW: Worksheets("Tabelle3").UnProtect "Passwort" owT
von: Falco
Geschrieben am: 22.09.2015 08:22:33
Danke,
mit der Zeile habe ich es hinbekommen, siehe unten. Es funktioniert super.
Es gibt vielleicht noch ein Feintuning bedarf.
Jedes mal wenn ich nun im Excel eine neue Zelle anklicke, braucht der Rechner/die Datei eine Sekunde und wird träge. Auf Dauer ist das nervig. Ich vermute das er dass Makro bei jeden neuen Klick komplett durchrechnet. Von den unten zusehenden Worksheets existieren 8 Stück und später auch mehr + die Arbeitsmappe.
Was könnte man noch verändern? Excel muss die markierten Zellen ja nur nach dem Drucken wieder farbig machen und nicht nach jeden Klick auf eine Zelle.

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Worksheets("Seite 1").Unprotect "FH"
Worksheets("Seite 1").Range("Ofenanlage").Interior.ColorIndex = 6
Worksheets("Seite 1").Range("Prüftag").Interior.ColorIndex = 6
Worksheets("Seite 1").Range("Techniker").Interior.ColorIndex = 6
Worksheets("Seite 1").Range("Betreuer").Interior.ColorIndex = 6
Worksheets("Seite 1").Protect "FH"
End Sub


Bild

Betrifft: AW: Worksheets("Tabelle3").UnProtect "Passwort" owT
von: Falco
Geschrieben am: 22.09.2015 09:18:19
Könnte man nicht hier noch ein Ansatz finden:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Worksheets("Seite 1").Unprotect "FH"
Worksheets("Seite 1").Range("Ofenanlage").Interior.ColorIndex = xlNone
Worksheets("Seite 1").Range("Prüftag").Interior.ColorIndex = xlNone
Worksheets("Seite 1").Protect "FH"
Worksheets("Seite 3").Unprotect "FH"
Worksheets("Seite 3").Range("Ofenanlage").Interior.ColorIndex = xlNone
.
.
.
Worksheets("Seite 5").Protect "FH"
End Sub

Private Sub Workbook_AfterPrint(Cancel As Boolean)
Worksheets("Seite 1").Unprotect "FH"
Worksheets("Seite 1").Range("Ofenanlage").Interior.ColorIndex = 6
Worksheets("Seite 1").Range("Prüftag").Interior.ColorIndex = 6
...
End Sub


Bild

Betrifft: AW: Worksheets("Tabelle3").UnProtect "Passwort" owT
von: Falco
Geschrieben am: 22.09.2015 15:42:05
Wenn ich den Ansatz in der Arbeitsmappe durchführe, bringt er immer eine Fehlermeldung (1004 wie oben) mitten in der Rechenschleife bei:
...
Worksheets("Seite 5").Range("Ofenanlage").Interior.ColorIndex = xlNone
...
Ich verstehe nicht warum es erst auf der Seite 5 einen Fehler gibt die an sich identisch ist wie die 4 zuvor...
MfG Falco

Bild

Betrifft: AW: Schreibgeschützt; farbige Zellen nicht drucken
von: Daniel
Geschrieben am: 21.09.2015 15:37:43
HI
würde ich so lösen:
1. erstelle für alle betroffnenen Zellen eine Bedingte Formatierung mit folgender Formel als Regel: =Tablle1!$A$1=WAHR
verwende als Format dasjenige, welches die Zellen beim Ausdruck haben sollen (Hintergrund weiss).
2. um jetzt die Datei für den Ausdruck umzuformatieren, gibst du einfach in die verwendete Zelle den Wert WAHR ein.

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Sheets("tabelle1").Range("A1").Value = True
End Sub
für die Zelle, über die du die Bedingte Formatierung steuerst, nimmst du einfach das Häkchen bei "Gesperrt" in der Formatierung - Schutz raus, dann kannst du diese Zelle auch bei aktivem Blattschutz einfach ändern.
hat auch den Vorteil, dass du dann einfach eine Datei ändern kannst, (andere Farben, neue Zellen usw) ohne dass du im Code was ändern musst.
Gruß Daniel

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Schreibgeschützt; farbige Zellen nicht drucken"