Druckbereich durch Makro

Hallo VBA Kenner,

ich möchte beim sortieren meiner Excellisten den Druckbereich in meinem Makro unabhängig von der Anzahl der Zeilen bis Spalte O begrenzen. Das heißt die Zeilen haben mehr Spalten wie ich ausdrucken möchte.
Da die Anzahl der Zellen unterschiedlich ist kann ich mit Range (A1:open_mouth:1500) nicht arbeiten.
Das ganze nur für ein Tabellenblatt.
Für Euere Hilfe bin ich dankbar.

Viele Grüße
H.

Hallo H,

ich hoffe du hälst die Fragen aus, sorry müssen aber sein.

ich möchte beim sortieren

Hat das Sortieren irgendwas mit der Anfrage zu tun?
Wenn ja, was?

meiner Excellisten den Druckbereich
in meinem Makro unabhängig von der Anzahl der Zeilen bis
Spalte O begrenzen.

Ich verstehe nicht ganz den Zusammenhang zwischen Anzahl der Zeilen und Spalte O.
Mit Vba kannste doch, völlig unabhängig von der Anzahl der Zeilen, immer nur Ax:open_mouth:x ausdrucken.

Das heißt die Zeilen haben mehr Spalten
wie ich ausdrucken möchte.

Vba interessiert es doch nicht was in den Spalten P usw. steht.

Da die Anzahl der Zellen unterschiedlich ist kann ich mit
Range (A1:open_mouth:1500) nicht arbeiten.

Was meinst du mit arbeiten? Das sind 22500 Zellen.

Beschreib bitte mal anders was du da vorhast.

Irgednwie sieht das lösbar aus, und ich denke ich krieg das auch hin, aber ich weiß grad nicht genau genug was ich machen soll um den Code zu entwickeln.

Gruß
Reinhard

Hallo H.,

ich möchte beim sortieren meiner Excellisten den Druckbereich
in meinem Makro unabhängig von der Anzahl der Zeilen bis
Spalte O begrenzen.

Da scheinbar kein Ereignis durch das Sortieren ausgelöst wird, könnte Dir möglicherweise der folgende Code weiterhelfen. Er legt den Druckbereich vor dem Ausdrucken fest:

Private Sub Workbook\_BeforePrint(Cancel As Boolean)

 Tabelle1.PageSetup.PrintArea = "$A$1:blush:O$" & Tabelle1.Range("$A$" & Tabelle1.Rows.Count).End(xlUp).Row

End Sub

Der Name der Tabelle muß noch angepaßt werden. Ob es ausreichend ist, die unterste gefüllte Zeile nur aus Spalte A zu beziehen, kann ich natürlich nicht sagen.

VG
Carsten

Vielen Dank an Carsten und Reinhard.
Nun am Wochenende probiere ich den Vorschlag von Reinhard aus, ich lasse es Euch wissen. Vielen Dank bis dann.
(Druckbereich einrichten für die Spalten A-O - mit Selbsterkennung wieviel Zeilen belegt sind.
Grüße H.

Hallo Carsten,

leider ist das Makro noch nicht ganz geglückt.
Ich habe Ihren Vorschlag in folgendes Makro eingefügt:

Sub seiteeinrichten()

Dim inttab As Integer
For inttab = 1 To ActiveWorkbook.Sheets.Count

Sheets(inttab).Select
Cells.Select
'Datei_Seite_eintrichten
ActiveSheet.PageSetup.PrintArea = „“
With ActiveSheet.PageSetup
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA4
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
.LeftMargin = Application.InchesToPoints(0.8)
.RightMargin = Application.InchesToPoints(0.8)
.BottomMargin = Application.InchesToPoints(1.1)
End With

Next inttab

Sheets(„gesamt_Stückliste“).Select

'Private Sub Workbook_BeforePrint(Cancel As Boolean)

Gesamt_Stückliste.PageSetup.PrintArea = „$A$1:blush:O$“ & Gesamt_Stückliste. _
Range("$A$" & Gesamt_Stückliste.Rows.Count).End(xlUp).Row

End Sub

Ich weiß noch nicht was Private Sub bedeutet, Makro bleibt in Zeile Gesamt_Stückliste.PageSetup… stehen.

Für weitere Hilfe bin ich dankbar

mfg H.

'Private Sub Workbook_BeforePrint(Cancel As Boolean)

Gesamt_Stückliste.PageSetup.PrintArea = „$A$1:blush:O$“ &
Gesamt_Stückliste. _
Range("$A$" & Gesamt_Stückliste.Rows.Count).End(xlUp).Row

End Sub

Ich weiß noch nicht was Private Sub bedeutet, Makro bleibt in
Zeile Gesamt_Stückliste.PageSetup… stehen.

Hallo H,

schau in der Hilfe nach bei Sub nach, da wird Private, Public usw. erklärt.

Private Sub Workbook_BeforePrint(Cancel As Boolean)

Dies gehört einzig in das Modul „DieseArbeitsmappe“.
Dein Standard Code gehört in ein Standardmodul wie Modul1.

Gesamt_Stückliste.PageSetup.PrintArea = „$A$1:blush:O$“ &
Gesamt_Stückliste. _
Range("$A$" & Gesamt_Stückliste.Rows.Count).End(xlUp).Row

sieht gar nicht schlecht aus. Ich habe es nachgestellt mit
Sub tt()
Sheets(2).Select
Sheets(1).PageSetup.PrintArea = „$A$1:blush:O$“ & Sheets(1). _
Range("$A$" & Rows.Count).End(xlUp).Row
End Sub
Das geht fehlerfrei.

Entweder ist bei meiner Nachstellung doch ein Unterschied zum Original, oder der Fehler liegt woanders.

Gruß
Reinhard

Hallo H.

'Private Sub Workbook_BeforePrint(Cancel As Boolean)

Gesamt_Stückliste.PageSetup.PrintArea = „$A$1:blush:O$“ &
Gesamt_Stückliste. _
Range("$A$" & Gesamt_Stückliste.Rows.Count).End(xlUp).Row

End Sub

Ich weiß noch nicht was Private Sub bedeutet, Makro bleibt in
Zeile Gesamt_Stückliste.PageSetup… stehen.

Ich bin mir ziemlich sicher, dass der Ausdruck „Gesamt_Stückliste“ falsch ist. Der Ausdruck „Gesamt_Stückliste“ ist bestimmt der Name des Tabellenblattes, der im Tabellenblatt-Register verwendet wird. Hier im Code sollte allerdings der Code-Name des Tabellenblattes verwendet werden, der im Projektfenster des VBA-Editors zu sehen ist.

Funktionieren sollte allerdings auch diese Schreibweise:

Worksheets("gesamt\_Stückliste")....

Ich empfehle allerdings, den Code-Namen zu verwenden, da sonst Schwierigkeiten auftreten werden, falls der Tabellenblatt-Name im Blatt-Register geändert wird. Für Code-Namen bitte keine Umlaute verwenden.

VG
Carsten

Hallo Reinhard,

Makro läuft, wäre ich nicht drauf gekommen.

Sub tt()
rausgenommen (Sheets(2).Select)

Sheets(1).PageSetup.PrintArea = „$A$1:blush:O$“ & Sheets(1). _
Range("$A$" & Rows.Count).End(xlUp).Row
End Sub

rausgenommen Sheets(2), wusste nicht für was das gut ist.
Probierte auch mit Sheets(1) und keine Änderung dadurch.
Makro funktioniert, warum Sheets(2).
Auf jeden Fall vielen, vielen Dank an Euch Beiden.
Schönes Wochenende.

Gr. Hans