Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1740to1744
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Excel VBA: Seite einrichten und drucken
28.02.2020 09:31:42
Axel
Hallo zusammen,
ich hab schon ausgiebig recherchiert, zwar Ansätze, aber noch nicht die Lösung gefunden.
https://www.herber.de/bbs/user/135505.xlsm
Im Tabellenblatt 1 gibt einen CommandButton (Druck), bei dem folgender Code hinterlegt ist:
Private Sub CommandButton21_Click()
With Range(Cells(1, 1), Cells(Cells(Rows.Count, 5).End(xlUp).Row, 9))
.PageSetup.PrintTitleRows = "$1:$11"
.PrintOut preview:=True
End With
End Sub
Es sollte folgendes passieren:
- identifiziere ab Zelle A1 die letzte beschriebene Zeile in den Spalten A:I
- der Bereich A1:I11 soll bei Mehrseitendruck als Kopfzeile wiederholt werden (inkl. der Grafiken, die hier nur exemplarisch eingefügt sind)
- aktuell ist der beschriebene Bereich vor dem Druck als Seitenansicht dargestellt, in der Endlösung kann aber auch einfach gedruckt werden (dann einfach: .PrintOut ?)
Was noch fehlt ist die Formatierung. Ich habe zum Thema "Seite einrichten" gelesen, dass man mit FitToPagesWide and -Tall etwas vorgeben kann, aber wie programmiert man, wo ein Seitenumbruch automatisch stattfindet, wenn das zu druckende länger als 1 Seite ist?
Es müsste auch noch hinterlegt werden, dass der Druck im Querformat stattfinden soll.
Wieder einmal vielen Dank vorab für eure Hilfe.
Beste Grüße
Axel

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA: Seite einrichten und drucken
28.02.2020 09:48:44
Nepumuk
Hallo Axel,
alle deine Fragen beantwortet dir der Makro-Rekorder.
Gruß
Nepumuk
AW: Excel VBA: Seite einrichten und drucken
28.02.2020 10:30:45
Axel
Hallo Nepumuk,
ich hab das, was ich machen möchte, vorher mit dem Makro-Editor aufgezeichnet und danach im Netz nach einer Lösung gesucht.
Der Editor zeichnet einen riesigen Code auf, von dem ich nur einen Bruchteil verstehe und denke, dass auch viel davon überflüssig ist. Oder ist das alles echt nötig?
Was trotzdem noch fehlt ist der automatische Seitenumbruch, wenn das erste Tabellenblatt voll ist und wenn ich festlege, dass Querformat eingerichtet werden soll, muss ja trotzdem noch der rechte Rand erweitert werden. Wo steht denn das im Code? Wie gesagt, eine Menge Code, den ich nicht verstehe.
Wenn das zu aufwändig ist, entschuldige ich mich an dieser Stelle. Ich schaue paralle zu meiner Anfrage auch immer, ob ich alleine weiterkomme.
Viele Grüße
Axel
Anzeige
AW: Excel VBA: Seite einrichten und drucken
28.02.2020 10:38:59
Nepumuk
Hallo Axel,
dann zeig mal deinen aufgezeichneten Code. Ich schreib dir dann dazu was was bedeutet.
Den Seitenumbruch macht Excel automatisch wenn die vorhergehende Seite voll ist, darum brauchst du dich nicht kümmern.
Gruß
Nepumuk
AW: Excel VBA: Seite einrichten und drucken
28.02.2020 10:46:53
Axel
Hallo Nepumuk,
vielen Dank dafür. Ich hab auch mal was kommentiert, was ich denke verstanden zu haben:
Private Sub CommandButton21_Click()
' Identifiziert den ausgefüllten Bereich ab Zelle A1 in den Spalte A:I
With Range(Cells(1, 1), Cells(Cells(Rows.Count, 5).End(xlUp).Row, 9))
' Legt den Wiederholungsbereich für jede Seite fest, A1:I11 inkl. Grafiken
.PageSetup.PrintTitleRows = "$1:$11"
.PrintTitleColumns = ""
' Formatierung Querformat
.Orientation = xlLandscape
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.708661417322835)
.RightMargin = Application.InchesToPoints(0.708661417322835)
.TopMargin = Application.InchesToPoints(0.78740157480315)
.BottomMargin = Application.InchesToPoints(0.78740157480315)
.HeaderMargin = Application.InchesToPoints(0.31496062992126)
.FooterMargin = Application.InchesToPoints(0.31496062992126)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 100
.PrintErrors = xlPrintErrorsDisplayed
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.ScaleWithDocHeaderFooter = True
.AlignMarginsHeaderFooter = True
.EvenPage.LeftHeader.Text = ""
.EvenPage.CenterHeader.Text = ""
.EvenPage.RightHeader.Text = ""
.EvenPage.LeftFooter.Text = ""
.EvenPage.CenterFooter.Text = ""
.EvenPage.RightFooter.Text = ""
.FirstPage.LeftHeader.Text = ""
.FirstPage.CenterHeader.Text = ""
.FirstPage.RightHeader.Text = ""
.FirstPage.LeftFooter.Text = ""
.FirstPage.CenterFooter.Text = ""
.FirstPage.RightFooter.Text = ""
' Seitenansicht: Erweiterung bis einschließlich Spalte I
.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
.PrintOut preview:=True
End With
End Sub

Anzeige
AW: Excel VBA: Seite einrichten und drucken
28.02.2020 13:52:14
Axel
Bin jetzt erst mal in Terminen und dann weg.
Ich schau Montag wieder rein.
@Nepumuk, Du musst nicht alles kommentieren, einiges ist ja selbsterklärend.
Schade, dass das Makro nicht läuft. Gleich zu beginn kommt die Fehlermeldung "Objekt unterstützt diese Methode oder Eigenschaft nicht".
Schönes Wochenende
Axel
AW: Excel VBA: Seite einrichten und drucken
03.03.2020 06:28:47
Axel
Hallo Nepumuk,
ich frage noch mal nach, ob Du weiter unterstützen kannst.
Leider komme ich ohne die Unterstützung des Forums nicht weiter und bin immer dankbar für diese tolle Möglichkeit.
Sga bitte kurz bescheid, ob Du noch antworten wirst.
Vielen Dank nochmals.
Axel
Anzeige
Fehlermeldung bei folgendem Code
03.03.2020 07:58:12
Axel
Hallo zusammen,
falls jemand diesen Thread noch beachtet, ich habe folgenden Code, der doch eigentlich funktionieren sollte, aber an der Stelle " ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
" erscheint eine Fehlermeldung.
Bitte kann mir jemand sagen, warum?
Vielen Dank vorab
Axel
Sub Seite_einrichten()
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.PrintTitleRows = "$1:$11" 'Wiederholungszeilen pro Seite
.PrintTitleColumns = ""
.PrintArea = ""
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.31496062992126)
.RightMargin = Application.InchesToPoints(0.31496062992126)
.TopMargin = Application.InchesToPoints(0.393700787401575)
.BottomMargin = Application.InchesToPoints(0.393700787401575)
.HeaderMargin = Application.InchesToPoints(0.31496062992126)
.FooterMargin = Application.InchesToPoints(0.31496062992126)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape 'Querformat
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
.PrintErrors = xlPrintErrorsDisplayed
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.ScaleWithDocHeaderFooter = True
.AlignMarginsHeaderFooter = True
.EvenPage.LeftHeader.Text = ""
.EvenPage.CenterHeader.Text = ""
.EvenPage.RightHeader.Text = ""
.EvenPage.LeftFooter.Text = ""
.EvenPage.CenterFooter.Text = ""
.EvenPage.RightFooter.Text = ""
.FirstPage.LeftHeader.Text = ""
.FirstPage.CenterHeader.Text = ""
.FirstPage.RightHeader.Text = ""
.FirstPage.LeftFooter.Text = ""
.FirstPage.CenterFooter.Text = ""
.FirstPage.RightFooter.Text = ""
End With
Application.PrintCommunication = True
ActiveWindow.View = xlPageBreakPreview
ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
ActiveSheet.HPageBreaks(1).DragOff Direction:=xlDown, RegionIndex:=1
ActiveWindow.View = xlNormalView
Application.Dialogs(xlDialogPrint).Show
End Sub

Anzeige
AW: Excel VBA: Seite einrichten und drucken
29.02.2020 18:53:52
Sven
Hallo,
da ich auch vor solch einem Problem stand, anbei mein verwendetes Makro.
Gruss
Sven A.

Private Sub Drucken()
With ActiveSheet
Druckanfang = Columns("B").Find("*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows,  _
LookIn:=xlValues).Row
Druckende = .Cells(Rows.Count, "D").End(xlUp).Row
.PageSetup.PrintArea = ""
.PageSetup.PrintArea = Range(Cells(Druckanfang, 3), Cells(Druckende, 13)).Address
.PageSetup.PrintTitleRows = "$C$1:$P$7"
.PageSetup.PaperSize = xlPaperA4
.PageSetup.CenterHorizontally = True
.PrintOut 'Sofortdruck
'.PrintPreview 'nutzen wenn eine Auswahl des Druckers gewünscht
End With
End Sub

Anzeige
AW: Excel VBA: Seite einrichten und drucken
29.02.2020 18:59:33
Sven
Hallo,
da ich auch vor solch einem Problem stand, anbei mein verwendetes Makro.
Gruss
Sven A.

Private Sub Drucken()
With ActiveSheet
Druckanfang = Columns("B").Find("*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows,  _
LookIn:=xlValues).Row
Druckende = .Cells(Rows.Count, "D").End(xlUp).Row
.PageSetup.PrintArea = ""
.PageSetup.PrintArea = Range(Cells(Druckanfang, 3), Cells(Druckende, 13)).Address
.PageSetup.PrintTitleRows = "$C$1:$P$7"
.PageSetup.PaperSize = xlPaperA4
'.PageSetup.CenterHorizontally = True 'Hochformat
.PageSetup.Orientation = xlLandscape 'Querformat
.PrintOut 'Sofortdruck
'.PrintPreview 'nutzen wenn eine Auswahl des Druckers gewünscht
End With
End Sub

Anzeige
AW: Excel VBA: Seite einrichten und drucken
02.03.2020 07:28:09
Axel
Guten Morgen Sven,
vielen Dank.
Wenn ich den Code richtig verstanden habe, suchst Du ab Spalte B nach dem *.
Bzgl. PrintArea muss ich mal im Netz suchen, was das heißt.
@Nepumuk: hattest Du schon Zeit, mal über den Code zu schauen?
Allen einen guten Wochenstart.
Axel
AW: Excel VBA: Seite einrichten und drucken
06.03.2020 21:42:00
Sven
hallo,
leider komme ich mit dem Forum nicht so ganz zurecht, hoffe aber das meine Antwort dich erreicht. Hier mein Vorschlag:
Private Sub Drucken()
Druckende = Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row
'ermittelt die letzte Zelle mit Inhalt im gesamten Blatt
With ActiveSheet
.PageSetup.PrintArea = "" 'evt vorhandenen Druckbereich löschen
.PageSetup.PrintArea = Range(Cells(12, 1), Cells(Druckende, 9)).Address
.PageSetup.PrintTitleRows = "$A$1:$I$11"
.PageSetup.PaperSize = xlPaperA4
'.PageSetup.CenterHorizontally = True 'Hochformat
.PageSetup.Orientation = xlLandscape 'Querformat
'.PrintOut 'Sofortdruck wenn auskommentiert
.PrintPreview 'nutzen wenn eine Auswahl des Druckers gewünscht
End With
End Sub

Anzeige

77 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige