Farbige Zellen vor Druck ändern
Hallo Ihr guten Geister dieses Forums.
Ich habe eine Tabelle erstellt in der die Eingabefelder hellgelb makiert sind (der Übersichtlichkeit wegen) bis zu dem Druckerwechsel war auch alles in Ordnung die Felder wurden wie normale Felder im SW-Mode als Felder ohne Farbe ausgedruckt . Nun gab es einen Druckerwechsel und dieser läst sich nicht mehr zum nicht Drucken der Farbe in den Feldern bewegen. Die felder werden hellgrau gedruckt. Gibt es über eine Möglichkeit die vielen Eingabefelder ohne die Farbe zu drucken. Vielen Dank im voraus.
Gruß Karsten
Antwort schreiben
Antwort 1 von woher vom 09.03.2019, 19:01 Options
Hallo,
im Menue: Datei
klick auf: Seite einrichten
Register: Tabelle
Haken bei Schwarzweissdruckk setzen
mfg
woher
Antwort 2 von kvtv vom 09.03.2019, 20:17 Options
Hallo woher,
danke für die schnelle Antwort aber diese Möglichkeit funktioniert nicht der Drucker komentiert das helle Gelb als hellgrau.
Gruß Karsten
Antwort 3 von kvtv vom 12.03.2019, 21:55 Options
Hallo Ihr guten Geister dieses Forums, kann mir keiner einen Tipp geben wie der Druck ohne Graustufen trozdem funktioniert. Kann man vieleicht in allen Tabellenblättern alle Felder die hellgelb sind auf einmal vor dem Druck in weise Felder umwandeln und anschließend die Felder wieder hellgelb markieren. Vielen Dank im voraus.
Gruß Karsten
Antwort 4 von workaholic vom 12.03.2019, 22:00 Options
hast du mal probiert, den druck nur als "s/w" auszuwerfen und nicht als "graustufig"... ansonsten kann ich mir nicht vorstellen dass ein "neuer" drucker sowas nicht unterstützt...
torben
Antwort 5 von workaholic vom 12.03.2019, 22:03 Options
wer lesen kann, ist klar im vorteil.... meine antwort von eben wurde schon gebracht... naja...
du kannst excel auch dagen, dass definierte felder "anders gedruckt werden sollen... z. b.: drop down menus als schraffiert hinterlegete zellen... und ebenso kannst du das auch wieder abstellen über das menu "optionen"...
torben
Antwort 6 von nighty vom 13.03.2019, 13:12 Options
hi all :-)
wie gewünscht :-)
gruss nighty
Sub Makro1()
Dim zaehler0 As Long
Dim zaehler1 As Integer
ReDim tab1(Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row, Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Column)
For zaehler0 = 1 To Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row
For zaehler1 = 1 To Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Column
If Cells(zaehler0, zaehler1).Interior.ColorIndex <> -4142 Then
tab1(zaehler0, zaehler1) = Cells(zaehler0, zaehler1).Interior.ColorIndex
Cells(zaehler0, zaehler1).Interior.ColorIndex = -4142
End If
Next zaehler1
Next zaehler0
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
For zaehler0 = 1 To Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row
For zaehler1 = 1 To Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Column
If tab1(zaehler0, zaehler1) > 0 Then Cells(zaehler0, zaehler1).Interior.ColorIndex = tab1(zaehler0, zaehler1)
Next zaehler1
Next zaehler0
End Sub
Antwort 7 von kvtv vom 14.03.2019, 21:57 Options
Hallo Nighty,
danke für Deine umfassende Lösung. Ich kenn mich zwar ein wenig aus aber eine kurze Erklärung wie es funktioniert wäre nicht schlecht, damit ich auch noch was davon lerne um es vieleicht nächstes selbst hinzubekommen.
Vielen Dank im voraus.
Gruß Karsten
Antwort 8 von nighty vom 15.03.2019, 16:20 Options
hi all :-)
wie gewünscht :-)
gruss nighty
Sub Makro1()
Rem deklarierung der variablen
Dim zaehler0 As Long
Dim zaehler1 As Integer
Rem festlegung eine zwei dimensionalen feldes das von der letzten zeile wie spalte bestimmt wird
ReDim tab1(Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row, Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Column)
Rem erste schleife fuer den zeilendurchlauf
For zaehler0 = 1 To Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row
Rem zweite schleife fuer den spaltendurchlauf
For zaehler1 = 1 To Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Column
Rem abfrage auf gesetzte farbe (-4142=keine farbe gesetzt)
If Cells(zaehler0, zaehler1).Interior.ColorIndex <> -4142 Then
Rem farbe gefunden mit anschliessender uebergabe des farbindexes zum zweidimensionalen feld
tab1(zaehler0, zaehler1) = Cells(zaehler0, zaehler1).Interior.ColorIndex
Rem farbe der betreffenden zelle löschen
Cells(zaehler0, zaehler1).Interior.ColorIndex = -4142
Rem ende der abfrage
End If
Rem nächste spalte
Next zaehler1
Rem nächste zeile
Next zaehler0
Rem druckbefehl
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Rem zurückschreiben der farbindexe vom zweidimensionalen feld zu den zellen
Rem erste schleife für den zeilen durchlauf
For zaehler0 = 1 To Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row
Rem zweite schleife fuer den spalten durchlauf
For zaehler1 = 1 To Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Column
Rem abfrage des zweidimensionalen arrays auf grösser 0 (grösser 0=farbe vorhanden) mit anschliessenden zurückschreiben des farbindexes zur zelle
If tab1(zaehler0, zaehler1) > 0 Then Cells(zaehler0, zaehler1).Interior.ColorIndex = tab1(zaehler0, zaehler1)
Rem nächste spalte
Next zaehler1
Rem nächste zelle
Next zaehler0
End Sub
exel ist wie ein zweidimensionales feld aufgebaut
waagerechte und senkrechte,synchron dazu das zweidimensionale feld
a1 wäre tab1(1,1) ,c3 wäre tab1(3,3) usw
daher die schleifen durchläufe der zeilen und spalten synchron zum array, wobei das feld 0 nicht genutzt wird,das man aber mit zuzählung von 1 hätte nutzen können
ein wuerfel zum beispiel wäre ein dreidimensionales feld waagerechte senkrechte tiefe
noch interessanter sind >4 dimensionale felder oder auch sich selbtständig vergrössernde felder
anzuwenden bei selbsständiger aufnahme von daten mit bezügen zu den jeweiligen indexes
Antwort 9 von kvtv vom 15.03.2019, 22:39 Options
Hallo Nighty,
vielen Dank für die Erläuterung. Muß ich dieses Macro in alle 9 Tabellenblätter einfügen oder nur in "Diese Arbeitsmappe". Woher weis dieses Macro welche Zellen hellgelb sind in den 9 Arbeitsblättern. Habe Macro geschrieben das diese Tabellenblätter über Button in bestimmter Reihenfolge gedruckt werden. Muß ich dieses Macro denn dort mit einbinden, und anwelcher stelle (wohl am Anfang des Druckmacros). Du siest es sind noch ein paar fragen offen.
Vielen Dank im voraus.
Gruß Karsten
Antwort 10 von nighty vom 16.03.2019, 09:30 Options
hi karsten :-)
das makro ist nun auf das activesheet bezogen,daher bei jeder einzelnen tabelle aufzurufen ist
abtastung auf farbe erfolgt automatisch bzw jede farbe wird weggenommen und anschliessend wieder zurueckgesetzt
gruss nighty
Sub Makro1()
Dim zaehler0 As Long
Dim zaehler1 As Integer
ReDim tab1(ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row, ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column)
For zaehler0 = 1 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
For zaehler1 = 1 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
If ActiveSheet.Cells(zaehler0, zaehler1).Interior.ColorIndex <> -4142 Then
tab1(zaehler0, zaehler1) = ActiveSheet.Cells(zaehler0, zaehler1).Interior.ColorIndex
ActiveSheet.Cells(zaehler0, zaehler1).Interior.ColorIndex = -4142
End If
Next zaehler1
Next zaehler0
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
For zaehler0 = 1 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
For zaehler1 = 1 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
If tab1(zaehler0, zaehler1) > 0 Then ActiveSheet.Cells(zaehler0, zaehler1).Interior.ColorIndex = tab1(zaehler0, zaehler1)
Next zaehler1
Next zaehler0
End Sub
Antwort 11 von nighty vom 16.03.2019, 09:56 Options
hi karsten :-)
hier eine geänderte version die alle vorhandenen sheets ausdruckt ohne zellen hintergrundfarbe,wie du sehen kannst ist eine weitere schleife hinzugekommen mit einem zeiger auf das letzte sheet (index ermittlung)
gruss nighty
Sub Makro1()
Dim zaehler0 As Long
Dim zaehler1 As Integer
Dim tabs As Integer
For tabs = 1 To Sheets.Count
ReDim tab1(Sheets(tabs).UsedRange.SpecialCells(xlCellTypeLastCell).Row, Sheets(tabs).UsedRange.SpecialCells(xlCellTypeLastCell).Column)
For zaehler0 = 1 To Sheets(tabs).UsedRange.SpecialCells(xlCellTypeLastCell).Row
For zaehler1 = 1 To Sheets(tabs).UsedRange.SpecialCells(xlCellTypeLastCell).Column
If Sheets(tabs).Cells(zaehler0, zaehler1).Interior.ColorIndex <> -4142 Then
tab1(zaehler0, zaehler1) = Sheets(tabs).Cells(zaehler0, zaehler1).Interior.ColorIndex
Sheets(tabs).Cells(zaehler0, zaehler1).Interior.ColorIndex = -4142
End If
Next zaehler1
Next zaehler0
Sheets(tabs).PrintOut Copies:=1, Collate:=True
For zaehler0 = 1 To Sheets(tabs).UsedRange.SpecialCells(xlCellTypeLastCell).Row
For zaehler1 = 1 To Sheets(tabs).UsedRange.SpecialCells(xlCellTypeLastCell).Column
If tab1(zaehler0, zaehler1) > 0 Then Sheets(tabs).Cells(zaehler0, zaehler1).Interior.ColorIndex = tab1(zaehler0, zaehler1)
Next zaehler1
Next zaehler0
Next tabs
End Sub
Antwort 12 von nighty vom 16.03.2019, 10:09 Options
hi karsten :-)
noch das :-))
bei der redimensionierung erfogt ein löschen des array,du kannst aber auch eine redimensionierung mit dem parameter preserve angeben dann bleiben die daten innerhalb der redimensionierung erhalten,was aber in unseren fall nicht erforderlich ist da ja beim sheet wechsel neue daten gebraucht werden und die alten gelöscht werden muessen.
gruss nighty
Antwort 13 von kvtv vom 16.03.2019, 21:09 Options
Hallo Nighty,
vielen Dank für Deine Mühe. Wie kann ich denn Dein Makro in mein Druckmakro integrieren. Muß mein Druckmakro Dein Makro aufrufen oder wie kann man das lösen. Vielen Dank im voraus.
Gruß Karsten
Antwort 14 von nighty vom 17.03.2019, 11:32 Options
hi karsten :-)
dieser zeile
Sheets(tabs).PrintOut Copies:=1, Collate:=True
ist duch dein makro zu ersetzen
nicht vergessen bei deinem makro sub Makroname und endsub zu entfernen
gruss nighty
Antwort 15 von kvtv vom 17.03.2019, 20:50 Options
Hallo Nigthy,
vielen Dank für die schnellen Antworten. Habe eben Dein Makro eingebaut. Du hast geschrieben das mit der eine Versio alle sheets ausgedruckt werden. Dies habe ich genommen habe eine Fehlermeldung bei der Zeile
ReDim tab1(Sheets(tabs).UsedRange.SpecialCells(xlCellTypeLastCell).Row, Sheets(tabs).UsedRange.SpecialCells(xlCellTypeLastCell).Column)
Wenn ich über debuggen dann ins Makro gehe ist diese Zeile makiert. Hätte ich denn da noch irgend etwas verändern müssen das es in meine Tabelle passt.
Vielen Dank für Deine Mühe.
Gruß Karsten
Antwort 16 von Ralfman vom 18.03.2019, 00:22 Options
Hallo kvtv,
wenn ich die Ausgangsfrage richtig interpretiere, hast Du nur die Eingabefelder gelb gemacht um bei derEingabe nicht Versehendlich in eine Falsche Zelle zu Schreiben.
Wenn ich diesen Gedanken mal weiterspinne (ich hab das für eine Kundin auch schon mal so gehandhabt), drängt sich mir die Frage auf warum Du die Zelle nach der Eingabe nicht automatisch wieder weiß darstellen läßt.
Das ist ganz einfach durch die ISTLEER(A1) Formel in der Bedingten Formatierung bewerkstelligen.
Ich will hier die Leistung von nighty nicht schmälern, er ist sicherlich um ein vielfaches besser als ich in sachen Excel, aber manchmal ist das naheliegende im Komplexen Gedankengang nicht zu Finden.
Berichtigt mich Bitte wenn ich danebenliege.
Ralf
Antwort 17 von nighty vom 18.03.2019, 09:36 Options
hi karsten :-)
die mappe hat geschützte bereiche eventuell verbundene zellen :-)
nehme mit dem makrorecorder den vorgang des schützens und entschützens auf, dann hast du den code,setze schutz aufheben am anfang hin schützen dann am ende
gruss nighty