Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1600to1604
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

bei Druck nur s/w

bei Druck nur s/w
07.01.2018 13:33:02
Peer
Hallo
Ich komme gerade nicht weiter.
Ich möchte, dass der Ausdruck, der im Sheet farblich ist, beim Ausdruck s/w bzw grau ausgedruckt wird.
Dabei habe ich folgenden Code in einem Modul eingefügt und einer Formularschaltfläche "Drucken" als Makro zugewiesen.
Nur druckt er nicht in grau/sw, sondern weiterhin in Farbe.
Ich habe hier erstmal nur die Seitenvorschau "freigeschalten".
Sub druck_grau_Click()
Dim arrWerte()                          ' Variable für Array
Dim raZelle As Range                    ' Variable für die Zelle als Range
Dim loZaehler As Long                   ' Schleifenzähler
Dim loZaehler2 As Long                  ' Schleifenzähler
Dim rngDruckbereich As Range            ' Druckbereich
ActiveSheet.PageSetup.PrintArea = "$B$1:$O$50"
'Druckbereich festlegen
Set rngDruckbereich = Range("B1,O50")
'   Bildschirmaktualisierung aus
Application.ScreenUpdating = False
'   Blattschutz aufheben
ActiveSheet.Unprotect Password:=""
'   Ausführung in Tabelle1
With Worksheets("Januar")
'       Schleife über jede Zelle des benutzten Bereichs
For Each raZelle In Worksheets("Januar").UsedRange
'           Zelle ist mit einer Füllfarbe formatiert
If raZelle.Interior.Color  xlNone Then
'               Array dynamisch erweitern
ReDim Preserve arrWerte(0 To 2, 0 To loZaehler)
'               Einlesen der Zelladresse in das Array
arrWerte(0, loZaehler) = raZelle.Address
'               Einlesen der Füllfarbe in das der Zelle in das Array
arrWerte(1, loZaehler) = raZelle.Interior.Color
'               Füllfarbe der Zelle zurücksetzen
raZelle.Interior.Color = xlNone
'               Schleifenzähler um 1 erhöhen
loZaehler = loZaehler + 1
End If
Next raZelle
'       Tabelle drucken
'        .PrintOut
'       Seitenvorschau öffnen
.PrintPreview
'       Drucker Auswahl Dialog öffnen
'         .Application.Dialogs(xlDialogPrint).Show
'       Schleife über alle Elemente des Arrays
For loZaehler2 = 0 To loZaehler - 1
'           Zurückübertragen der ausgelesenen Füllfarben
.Range(arrWerte(0, loZaehler2)).Interior.Color = arrWerte(1, loZaehler2)
Next loZaehler2
End With
'   Blattschutz aktivieren
ActiveSheet.Protect Password:=""
'   Bildschirmaktualisierung ein
Application.ScreenUpdating = True
End Sub
Wo ist hier der Fehler.
Übersehe ich etwas?
Anbei da File als zip (weil sonst zu gross)
https://www.herber.de/bbs/user/118746.zip
Vielen Dank für die Hilfe.
LG
Peer

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

Betreff
Datum
Anwender
Anzeige
AW: bei Druck nur s/w
07.01.2018 13:34:17
Hajo_Zi
Hallo Peer,
benutze den Makrorecorder.

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung....."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben,
mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Beiträge von Werner, Luc, robert und folgende lese ich nicht.
AW: bei Druck nur s/w
07.01.2018 13:49:10
Peer
Hallo Hajo.
Ist es die einzige Lösung?
Ich würde gern den Drucker-Dialog vorher öffnen lassen, um zu entscheiden, welcher der installierten Drucker verwendet werden sollen. Notfalls will ich ja auch erstmal nur die Seitenansicht.
Gruß
Peer
Anzeige
Durcken ohne Farbe
07.01.2018 14:45:45
Beverly
Hi Peer,
wenn du den Code, den du 1:1 aus dem Beispiel "Drucken ohne Farbe" von meiner HP entnommen hast, auch verstanden oder zumindest die Kommentare richtig gelesen hättest, dann wüsstest du auch, weshalb er bei dir nicht funkioniert: dort steht eindeutig Zelle ist mit einer Füllfarbe formatiert - bei dir gibt es keine Zellen mit formatierter Füllfarbe sondern formatierter Schriftfarbe, folglich kann der Code nicht das bringen was du dir von ihm erhoffst.
Übrigens sollte man den in einem Code vorhandenen Ursprungshinweis aus Fairnessgründen schon belassen, denn auch wenn man Tabellenblätter umbenennt wird der Code noch kein eigenes Produkt.


Anzeige
AW: Durcken ohne Farbe
07.01.2018 18:13:06
Peer
Hallo Beverly.
Sorry. Ich glaube, ich habe vor drei Jahren diesen Code für ein anderes Projekt gebraucht und alles soweit reduziert, wie es nötig war.
Es tut mir leid, werde es in Zukunft berücksichtigen.
Ich wollte dein Beispiel in mein derzeitige Projekt integrieren und habe nicht mehr daran gedacht.
Und du hast vollkommen recht, dass mir das nicht auffiel.
In meiner derzeitigen Mappe wollte ich zusätzlich auch die Formatierungen, also Schriftfarbe und Schriftdicke, mit einbeziehen.
Übrigens ist die Hintergrundfarbe da, nur über VBA und nicht über "bedingte Formatierung".
Nochmals Sorry für oben genanntes.
LG
Peer
Anzeige
AW: Durcken ohne Farbe
07.01.2018 18:38:25
Peer
Hallo.
Ich habe jetzt den Code folgend ergänzt.
Nur leider macht er nicht komplett, was er soll.
Ich habe in die If Then Else Anweisung folgende Zeilen eingefügt, aber das Ergebnis ist ausser der Schriftfarbe unzufrieden, denn die Dicke der Schrift bleibt erhalten und beim Verlassen des Druckdialoges geht die Tabelle nicht wieder in Urprung (also alles mit Formatierungen) zurück.
'       Schleife über jede Zelle des benutzten Bereichs
For Each raZelle In Worksheets("Januar").UsedRange
'           Zelle ist mit einer Füllfarbe formatiert
If raZelle.Interior.Color  xlNone And raZelle.Font.ColorIndex > 1 And raZelle. _
Font.Bold = True Then
'               Array dynamisch erweitern
ReDim Preserve arrWerte(0 To 2, 0 To loZaehler)
'               Einlesen der Zelladresse in das Array
arrWerte(0, loZaehler) = raZelle.Address
'               Einlesen der Füllfarbe in das der Zelle in das Array
arrWerte(1, loZaehler) = raZelle.Interior.Color
'               Füllfarbe der Zelle zurücksetzen
raZelle.Interior.Color = xlNone
'               Schrift der Zelle zurücksetzen
raZelle.Font.ColorIndex = 1
raZelle.Font.Bold = False
'               Schleifenzähler um 1 erhöhen
loZaehler = loZaehler + 1
End If

Anzeige
AW: Durcken ohne Farbe
08.01.2018 12:52:06
Beverly
Hi,
da die Zellen mit der Schriftfarbe Rot nicht mit den Zellen übereinstimmen die eine Füllfarbe haben kannst du nicht mit And als Verknüpfungsoperator arbeiten.
Die Füllfarbe ist bei dir Weiß und nicht "farblos" - das ist zu beachten und außerdem gibt es bei dir Zellen, die zwar Schriftfarbe Rot haben, deren Schriftschnitt jedoch nicht Fett ist. Das musst du ebenso berücksichtigen und alles ins Array einlesen und auch wieder zurücklesen. So sollte es funktionieren:
    With Worksheets("Januar")
'       Schleife über jede Zelle des benutzten Bereichs
For Each raZelle In Worksheets("Januar").UsedRange
'           Zelle ist mit einer Füllfarbe  Weiß oder Schriftfarbe Rot formatiert
If raZelle.Interior.ColorIndex  2 Or raZelle.Font.Color = 255 Then
'               Array dynamisch erweitern
ReDim Preserve arrWerte(0 To 3, 0 To loZaehler)
'               Einlesen der Zelladresse in das Array
arrWerte(0, loZaehler) = raZelle.Address
'               Einlesen der Füllfarbe in das der Zelle in das Array
arrWerte(1, loZaehler) = raZelle.Interior.Color
arrWerte(2, loZaehler) = raZelle.Font.Color
arrWerte(3, loZaehler) = raZelle.Font.Bold
'               Füllfarbe der Zelle auf Weiß setzen
raZelle.Interior.ColorIndex = 2
'               Schriftschnitt auf nicht Fett setzen
raZelle.Font.Bold = False
'               Schriftfarbe auf Schwarz setzen
raZelle.Font.ColorIndex = 1
'               Schleifenzähler um 1 erhöhen
loZaehler = loZaehler + 1
End If
Next raZelle
'       Tabelle drucken
'        .PrintOut
'       Seitenvorschau öffnen
.PrintPreview
'       Drucker Auswahl Dialog öffnen
'         .Application.Dialogs(xlDialogPrint).Show
'       Schleife über alle Elemente des Arrays
For loZaehler2 = 0 To loZaehler - 1
'           Zurückübertragen der ausgelesenen Füllfarben
.Range(arrWerte(0, loZaehler2)).Interior.Color = arrWerte(1, loZaehler2)
.Range(arrWerte(0, loZaehler2)).Font.Color = arrWerte(2, loZaehler2)
.Range(arrWerte(0, loZaehler2)).Font.Bold = arrWerte(3, loZaehler2)
Next loZaehler2
End With


Anzeige
AW: Durcken ohne Farbe
08.01.2018 14:59:34
Peer
Hallo Beverly.
Vielen Dank für deine Mühe.
Nun macht das Script nichts mehr. Alle Formatierungen bleiben auch beim Ausdruck erhalten.
Funktioniert dein Excel anders als meins.
Ich habe den ganzen Code abgesucht, um herauszufinden, was läuft und hier speziell nicht läuft.
Ich komme nicht drauf.
Alles schein richtig im Code zu stehen.
Wenn Hintergrund nicht weiss oder Schriftfarbe Rot, dann Array. Danach Hintergrund weiss, Schrift dünn schwarz.
Vorschau mit diesen Werten öffnen.
Vorschau schließt.
zurück zur Zeile des Einlesens des Array.

Ich sende am besten nochmal die Datei.
https://www.herber.de/bbs/user/118779.xlsm
Wäre schön, wenn du noch einmal drüber schauen könntest.
LG
Peer
Anzeige
Bedingte Formatierung!!!
08.01.2018 16:09:36
Beverly
Hi Peer,
mit "Excel gut" solltest du eigentlich wissen, dass eine bedingte Formatierung etwas grundsätzlich anderes ist als von Hand ausgeführte Zellformatierungen...
In deiner vorhergehenden Mappe waren die Zellformatierungen von Hand ausgeführt - dort funktioniert der Code auch völlig korrekt. In deiner jetzt hochgeladenen Mappe handelt es sich um bedingte Formatierungen - du musst dich also überhaupt nicht wundern, wenn der Code dann NICHT funktioniert und ich verstehe ehrlich gesagt auch ganz und gar nicht, weshalb zuerst eine Mappe mit völlig anderen Voraussetzungen hochgeladen wird - die Zeit, den dortigen Code anzupassen hätte ich mir sparen können...
Wie man die bedingte Formatierung löscht und erstellt kannst du mit dem Makrorekorder aufzeichnen.


Anzeige
AW: Bedingte Formatierung!!!
08.01.2018 18:09:59
Peer
Hallo Beverly.
Ich habe bei diesem Thread schon erwähnt gehabt, dass die die Formatierung über VBA läuft.
Hallo Beverly.
Sorry. Ich glaube, ich habe vor drei Jahren diesen Code für ein anderes Projekt gebraucht und  _
alles soweit reduziert, wie es nötig war.
Es tut mir leid, werde es in Zukunft berücksichtigen.
Ich wollte dein Beispiel in mein derzeitige Projekt integrieren und habe nicht mehr daran  _
gedacht.
Und du hast vollkommen recht, dass mir das nicht auffiel.
In meiner derzeitigen Mappe wollte ich zusätzlich auch die Formatierungen, also Schriftfarbe  _
und Schriftdicke, mit einbeziehen.
Übrigens ist die Hintergrundfarbe da, nur über VBA und nicht über "bedingte Formatierung". _
b>
Nochmals Sorry für oben genanntes.
LG
Peer
Mein Excel oder VBA ist zwar nicht so perfekt, wie deins, aber inzwischen weiss ich, das es für die bedingte Formatierung zwei Arten der Umsetzung gibt.
Nur die VBA-Variante ist mir neu.
Der Grund, das die Datei eine andere ist war, dass ich meine ursprünglich Datei inzwischen wegen der Größe aussen vor lassen wollte und mit einer Referenz-Datei weiter gearbeitet habe.
Und diese Datei habe ich nun aus Versehen geschickt.
Es tut mir leid.
Bei dieser Datei war die Formatierung noch mit Hand erstellt. Das habe ich vergessen.
Ich schicke nochmal die Datei mit der VBA-Formatierung und hoffe, du hilfst mir trotzdem nochmal.
LG
Peer
https://www.herber.de/bbs/user/118784.zip
Anzeige
AW: Durcken ohne Farbe
08.01.2018 18:36:06
Peer
Hallo Beverly.
Ich bin jetzt zu Hause und konnte mich gleich mal deinen Code probieren.
Vielen Dank für deine Geduld.
Damit ist es gelöst.
Gruß
Peer

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige