Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Druckbereich per vba

Begonnen von Blightrem, Juli 19, 2010, 00:40:00

⏪ vorheriges - nächstes ⏩

Blightrem

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


database

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

Blightrem

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

sigma5345

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

Blightrem

Leider kriege ich das mit dem Makro nicht auf die Reihe ???

MfG Blightrem

sigma5345

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.

Blightrem

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 ::)

database

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

Blightrem

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

ohnePlan

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ß

database

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

database

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:=True
Da 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