Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1860to1864
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
Inhaltsverzeichnis

Excel Druckbereich abfragen

Excel Druckbereich abfragen
17.12.2021 09:56:33
Tim
Hallo liebe Forums-Gemeinde,
ich arbeite seit einiger Zeit an einem Problem, krieg es aber nicht vernünftig gelöst.
Und zwar hab ich ein Rechnungstool erstellt, bei dem man aus einer Tabelle mit Rechnungspositionen beliebige Zeilen auswählen kann. Das Tool transformiert die Auswahl dann in eine Rechnung mit korrekter Käuferanschrift, Rechnungskopf und Rechnungsfuß.
Mein Problem ist nun, dass ab einer gewissen Anzahl von ausgewählten Zeilen die Rechnung zu lang wird und nicht mehr auf eine Seite passt. Der Rechnungsfuß soll hierbei immer (ähnlich Word: Zeilen zusammenhalten) komplett auf einer Seite landen, und nicht im Seitenumbruch abgeschnitten werden. Das heißt ich brauche eine Funktion, die mir ausgibt, bei welcher Zeile der Seitenumbruch ist, und dann den Rechnungsfuß entsprechend verschiebt, oder eben auch nicht.
Da ich Darstellungsfehlern etc. aus dem Weg gehen will, habe ich auf eine Übertragung in ein Word-Dokument verzichtet.
Mein Ansatz war anfangs den Druckbereich mittels "ActiveSheet.PageSetup.PrintArea" abzufragen, allerdings liefert mir das nicht die gewünschte Lage der Seitenumbrüche, so musste ich einen anderen Weg wählen, der etwas tiefer in die Excel Materie geht.
Da mein ausgedruckter Bereich immer 4 Spalten umfasst, habe ich mir die Länge dieser 4 Spalten in Points ausgeben lassen (ActiveSheet.Range("A1:D1").Width), wie auch die Breite einer DIN A4 Seite minus den beiden Seitenrändern in Points umgewandelt. Hieraus hab ich wiederum einen Faktor errechnet, womit Excel die Tabelle skalieren muss, damit sie genau in den Druckbereich passt (Druckeinstellung: Alle Spalten auf eine Seite).
Aus diesem Faktor dacht ich könnte ich die Anzahl der Zeilen, die auf eine Seite passen, ermitteln, indem ich alle Höhen der Zeilen multipliziert mit dem Skalierungsfaktor addiere und schaue wie lange dieser Wert kleiner ist als die Höhe einer DIN A4 Seite minus der Seitenränder oben und unten.
Leider funktioniert das Ganze nicht so, wie ich mir das vorgestellt habe :/
Mein bisheriger Code:

Private Sub Worksheet_Activate()
Dim BreitePapierCm As Double
Dim BreitePapierP As Double
Dim HoehePapierCm As Double
Dim HoehePapierP As Double
Dim BreiteDruckbereichP As Double
Dim HoeheDruckbereichP As Double
Dim linkerRandP As Double
Dim rechterRandP As Double
Dim untererRandP As Double
Dim obererRandP As Double
Dim Faktor As Double
Dim x As Integer
Dim Hilfe As Double
BreitePapierCm = 21
HoehePapierCm = 29.7
BreitePapierP = Application.CentimetersToPoints(BreitePapierCm)
HoehePapierP = Application.CentimetersToPoints(HoehePapierCm)
With ActiveSheet.PageSetup
linkerRandP = .LeftMargin
rechterRandP = .RightMargin
untererRandP = .BottomMargin
obererRandP = .TopMargin
End With
BreiteDruckbereichP = BreitePapierP - linkerRandP - rechterRandP
HoeheDruckbereichP = HoehePapierP - obererRandP - untererRandP
Faktor = ActiveSheet.Range("A1:G1").Width / BreiteDruckbereichP
Do While Hilfe 
Danke für eure Hilfe :)

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel Druckbereich abfragen
17.12.2021 10:54:17
Yal
Moin Tim,
unter laufende Makro Rekorder (nach dem Motto "der MR weisst alles") auf "Ansicht", "Seitenumbruchvorschau" umschalten und ein horizontale Seitentrennung per Hand/Maus verschieben.
Dann hast Du im Coding einen

Set ActiveSheet.HPageBreaks(1).Location = Range("A47")
Genau um diese Eigenschaft solltest Du die Lösung suchen.
VG
Yal
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige