Habe folgendes Problem:
Ich möchte in einer Tabelle mehrere Druckbereiche mittels eines Buttons drucken, z.B: die felder b2 bis g28 und die Felder b32 bis b39.
Das auszudrucken funktioniert zwar, ich möchte jedoch das die beiden Bereiche auf einer Seite ausgedruckt werden.
Ich verwende zur Zeit den untenstehenden Code
Private Sub Command_Button1()
Worksheets("Tabelle2").Range("B2:g28, b32.g39").PrintOut
Worksheets("Tabelle2").Range("B2:g28").PrintOut
Worksheets("Tabelle3").Range("B2:g27").PrintOut
End Sub
Kann mir jemand helfen ?
MfG Blightrem
Hallo, guten Morgen
Der von dir definierte Druckbereich erstreckt sich im Prinzip von B2 bis G39, du musst nicht zwangsweise 2 Bereiche definieren.
Range("B2:G39").Select
ActiveSheet.PageSetup.PrintArea = "$B$2:$G$39"
ActiveWindow.SelectedSheets.PrintPreview
...sollte den gesamten Bereich auf einer A4 Seite darstellen (Hochformat)
Excel bietet doch die Möglichkeit der Makroaufzeichnung - den erstellten Code KANN man dann anpassen und 'hinter' einen Button legen.
HTH
Peter
Zunächst mal danke für die Antwort, das löst leider mein Problem nicht, da der Bereich zwischen den von mir angegebenen Bereichen (hier also die Zeile 31) auf keinen Fall mitgedruckt werden soll
MfG Blightrem
Zitat von: database am Juli 19, 2010, 07:27:09
Excel bietet doch die Möglichkeit der Makroaufzeichnung - den erstellten Code KANN man dann anpassen und 'hinter' einen Button legen.
Hallo,
hast du den Tipp mal probiert ;)? Damit kannst du ein einfach machen was du willst und es aufzeichnen. Danach hast du den VBA Code den du brauchst :-)!
Gruß
Sigma
Leider kriege ich das mit dem Makro nicht auf die Reihe ???
MfG Blightrem
du gehst einfach auf Extras --> Makro --> Aufzeichnen. Dann markierst du den Bereich den du brauchst und klickst bei Datei - Drucken auf Druckbereich festlegen.
Anschließend noch unter Datei - Seite einrichten einstellen, dass alles auf eine Seite angepasst werden soll und die Aufzeichnung stoppen.
Wenn du dann auf Extras --> Makro --> Visual Basic Editor gehst kannst du den Code anschauen.
Super, so klappt es, jetzt hab ich nur noch ein Problem und zwar muss ich wenn ich meinen Button drücke immer manuell die Seitenumbruchsseite schließen, wie muss ich das einstellen das die Seite nicht angezeigt wird?
MfG Blightrem ::)
Hallo,
Zitatmanuell die Seitenumbruchsseite schließen
... die hast du sicher beim Aufzeichnen des Makros auch göffnet -
sieh mal in deinem Code nach ob die Zeile ---> ActiveWindow.View = xlPageBreakPreview <--- existiert und lösche sie.
Damit sollte keine Seitenumbruchsvorschau geöffnet werden.
HTH
Peter
Tja typischer Fall von "Zu früh gefreut", ich habe jetzt zwar das dem Makro "gefressen" aber das löst immer noch nicht mein Grundproblem. Ich möchte es mal so beschreiben, ich habe im meinem Eröffnungspost zwei Druckbereiche angegeben, sagen wir mal im 1. Bereich stehen "A", in der Zeile dazwischen (Zeilen 30 und 31) "B" und im 2. Druckbereich stehen "C" in der jeweiligen Zelle.
Ich möchte nun aif einem den "A" und den "C" Bereich ohne Leerstand ausgedruckt haben.
Hoffe das ich mich klar ausgedrückt habe.
Vielen Dank schon mal
Mfg Blightrem
Hey, kleine Zwischefrage, wie kann ich vorm drucken noch den Drucker auswählen?
Habe im Moment diesen Code zum Drucken eines Blattes und wechsel dorthin.
Sub Checkliste_drucken()
Worksheets("Checkliste").Activate
Worksheets("Checkliste").PrintOut
End Sub
Gruß
Hallo,
sorry, hat ein wenig gedauert, da der Thread in der Versenkung verschwunden war...
Also zum Druckbereich ohne die Zeilen 30 und 31:
Du hast zwar die Möglichkeit mehere Drucklbereiche zu definieren, aber diese werden jeweils auf einer eigenen Seite ausgedruckt.
Das kannst du nicht ändern, was du aber ändern kannst ist die Textfarbe deiner Felder, die nicht gedruckt werden sollen!
Bevor du nun den Print-Befehl absetzt lässt du mit folgenden Code die Schrift auf WEISS ändern:
Range("B30:G31").Select
Selection.Font.ColorIndex = 2
...
... hier kommt nun der PrintBefehl
und dann setzt du mit untenstehendem Code die Schriftfarbe wieder auf Automatisch zurück
Range("B30:G31").Select
Selection.Font.ColorIndex = 0
Wenn du keine Leerzeilen für den auszuschließenden Bereich haben willst, kannst du vorübergehend die Zeilenhöhe des Bereiches auf 0 setzen:
Rows("30:31").Select
Selection.RowHeight = 0
Danach setzt du die Zeilenhöhe wieder auf den Standaqrdwert zurück bzw. auf die Höhe, die DU verwendest:
Dazu selektierst du die Zeikle davor bis zur Zeile danach:
Rows("29:32").Select
Selection.RowHeight = 12.75 '=Standardhöhe
Die Zeilen mit 0-Höhe werden im Ausdruck nicht angezeigt.
HTH
Peter
Hallo,
@ohnePlan
Bitte künftig für neue Anfragen auch einen neuen Thread öffnen/anlegen!
Du kannst das ganz einfach per Makroaufzeichnung bewerkstelligen - da sieht der Code dann in Etwa so aus:
Range("A1:D15").Select
Application.ActivePrinter = "HP LaserJet 4L auf Ne03:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"HP LaserJet 4L auf Ne03:", Collate:=True
...wenn der ausgewählte Drucker nicht der Standarddrucker ist, sonst steht da nur folgendes:
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=TrueDa für die Verwendung des Standarddruckers nicht notwendig ist, dessen Namen bekanntzugeben.
Dieser Code steht dann anstelle von:
Zitat
Worksheets("Checkliste").PrintOut
Vielleicht möchtest Erwägung ziehen den Druckbereich anzugeben - dann kannst du das dem Thread weiter oben entnehmen wie's geht.
Grüße
Peter