Registriert seit: 17.01.2017
Version(en): 2010
Hallo Spezialisten
möchte gerne per VBA den Druckbereich bestimmen, jeweils von Spalte A bis und mit L.
Die erste Setie geht von Zeile 1 bis und mit Zeile 27
Ab der 2. Seite und nachfolgenden Seiten immer im Abstand von 29 Zeilen
(2. Seite bei 56, 3. Seite bei 85, 4. Seite bei 114 usw. ....und dies bis zum letzten Texteintrag in Spalte A (Alles was noch dem letzten Texteintrag kommt soll gelöscht werden)
Zudem muss jede Seite dann auf das Format auf A4 Quer vertikal und horizontal eingemittet sein.
Bischen viel auf einmal - aber das wird für den einen oder anderen sicherlich ein Klacks sein.
Danke im voraus
Gruss Norbert
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo Norbert,
kennst Du den Makrorekorder? Die Aufgabe sollte damit größtenteils lösbar sein.
Lediglich in einem Punkt müsste man eingreifen - was das Ende betrifft: Alles was noch dem letzten Texteintrag kommt soll gelöscht werden.
Da ist nur die Frage, wie man den genauer definiert. Der letzte unabhängig von Spalte A bis L oder der letzte in einer bestimmten Spalte oder …
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 17.01.2017
Version(en): 2010
Hallo
Makrorekorder kenne ich - da kriege ich nichts gescheites raus..
Gemeint ist nach dem letzten Texteintrag in Spalte A, danach soll alles gelöscht werden.
Ich habe für jeden Daternsatz eine Seite reserviert, es können schlussendlich bis zu 1500 Seiten entstehen.
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
aufgezeichnet bekommt man z.B. das für die ersten beiden Umbrüche:
Code:
Sub Makro1()
'
' Makro1 Makro
'
'
ActiveWindow.SmallScroll Down:=9
Rows("27:27").Select
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
ActiveWindow.SmallScroll Down:=24
Application.Left = 424
Application.Top = 155.5
ActiveWindow.SmallScroll Down:=6
Rows("56:56").Select
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
End Sub
das kann man erst mal auf das wesentliche das Einfügen der Umbrüche - einkürzen
Code:
Sub Makro1()
Rows("27").Select
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
Rows("56").Select
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
End Sub
Das könnte man nun bis zur Zeile 1500 so fortsetzen - bzw hier käme der erste Eingriff - eine Schleife
Code:
Sub Makro1()
'Variablendeklarationen
Dim iCnt%
'Ersten Zeilenumbruch setzen
Rows("27").Select
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
'weitere Umbrueche ab Zeile 56, alle 29 Zeilen setzen
For icnt=56 to 1500 step 29
Rows("56").Select
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
'Ende weitere Umbrueche ab Zeile 56, alle 29 Zeilen setzen
Next
End Sub
Bei mir kommt jetzt erst mal ein TimeOut - Abendbrot
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
so, jetzt der nächste Stand. Ich lösche jetzt alles nach dem letzten Eintrag in Spalte A. Wenn nach dem letzten Text noch Zahlen kommen werden die mit diesem Code nicht gelöscht. Wenn die weg sollen, müsste man noch auf den Unterschied Text / Zahl prüfen.
Code:
Sub Makro1()
'Variablendeklarationen
Dim iCnt%, iLastRow%
'letzte Zelle feststellen
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
'Daten darunter loeschen
Rows(iLastRow + 1 & ":" & Rows.Count).Clear
'Druckbereich festlegen
ActiveSheet.PageSetup.PrintArea = Range("A1:L" & iLastRow)
'Ersten Zeilenumbruch setzen
Rows("27").Select
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
'weitere Umbrueche ab Zeile 56, alle 29 Zeilen setzen
For iCnt = 56 To iLastRow Step 29
Rows(iCnt).Select
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
'Ende weitere Umbrueche ab Zeile 56, alle 29 Zeilen setzen
Next
End Sub
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 17.01.2017
Version(en): 2010
Hallo André
Makro bleibt hier immer hängen:
ActiveSheet.PageSetup.PrintArea = Range("A1:L" & iLastRow)
Woran liegt das?
Gruss Norbert
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo Norbert,
kommt eine Fehlermeldung? Bei mir läuft es durch, macht aber nix

Es fehlt am Ende der Zeile was:
ActiveSheet.PageSetup.PrintArea = Range("A1:L" & iLastRow)
.Address
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 17.01.2017
Version(en): 2010
Hallo André
passt - besten Dank
Gruss Norbert