Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1268to1272
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

Ganze Seiten ausdrucken trotz Begrenzung

Ganze Seiten ausdrucken trotz Begrenzung
stormlamp
Hallo,
mit folgendem Makro wird von einer tabelle nur soviel ausgedruckt, wie in der ersten Spalte mit Werten "" ansgefüllt ist:
Sub drucken()
For x = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Trim(Cells(x, 1))  "" Then anzzeilen = x
Next x
Range("A1:F" & anzzeilen).Select
Selection.PrintOut Copies:=1
Range("B1").Select
End Sub
Nun haben die Tabellenblätter jedoch Rahmen, die dann direkt unter der letzten befüllten Zelle abgeschnitten werden.
Wie kann ich das ändern, dass die komplette Seite ausgedruckt wird, auf der sich in der ersten Spalte der letzte Wert "" befindet?
Gruß
Hans
Ganze Seiten ausdrucken trotz Begrenzung
29.06.2012 10:27:33
stormlamp
Hallo,
ich habe das Makro um eine erweitert, um eine Makrozeile, die ich im Netz für die Ermittlung deraktuellen Seite gefunden habe, aber offensichtlich habe ich noch Syntaxfehler. Kann mir dabei bitte jemand helfen:
Sub drucken()
Dim Seite As Integer
For x = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Trim(Cells(x, 1))  "" Then anzzeilen = x
Next x
Range("A1:F" & anzzeilen).Select
Seite = ActiveDocument.Information(wdActiveEndPageNumber)
ActiveSheet.PrintOut From:=1, To:=Seite, Copies:=1
End Sub
Gruß
AW: Ganze Seiten ausdrucken trotz Begrenzung
29.06.2012 13:09:49
Rudi
Hallo,
um eine Makrozeile, die ich im Netz für die Ermittlung deraktuellen Seite gefunden habe
die eindeutig WORD-Code ist.
Wenn der Rahmen immer in der gleichen Zeile ist, dann blende alle Zeilen von x+1 bis Rahmen vor dem Drucken aus und danach wieder ein.
Gruß
Rudi
Anzeige
AW: Ganze Seiten ausdrucken trotz Begrenzung
29.06.2012 14:25:55
stormlamp
Hallo Rudi,
vielleicht habe ich mich falsch ausgedrückt. Das alte Makro:
Sub drucken()
For x = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Trim(Cells(x, 1))  "" Then anzzeilen = x
Next x
Range("A1:F" & anzzeilen).Select
Selection.PrintOut Copies:=1
End Sub
ermittelt die letzte Zeile, in der in der ersten Spalte der Formelwert "" ist und setzt den Druckbereich auf die letzte Zeile. Damit werden die Rahmen der letzten Seite nicht mehr komplett gedruckt.
Nun möchte ich feststellen, auf welcher Druckseite sich diese letzte Zelle befindet und den Druckbereich auf die komplette Seite erweitern, auf der sich diese zelle befindet. Dann werden die Rahmen auch vollständig ausgedruckt, selbst, wenn der untere Bereich inhaltlich leer ist. Die Lösung habe ich trotz insensivem goggeln nicht finden können.
Gruß
Hans
Anzeige
AW: Ganze Seiten ausdrucken trotz Begrenzung
30.06.2012 22:28:31
fcs
Hallo Hans,
die folgende Anpassung könnte bei dir funktionieren.
Aber warum setzt du nicht einfach von Hand den Druckbereich auf den gewünschten Bereich, so dass alle Zellen einschliesslich der Zellen mit den Rahmen erfasst werden?
Als weitere Möglichkeit könnte man auch in einer der suchen, ob die Zelle ein bestimmtes Rahmenformat hat. dass ist dann aber wieder komplizierter.
Gruß
Franz
Sub drucken2()
Dim anzzeilen As Long
anzzeilen = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
Range("A1:F" & anzzeilen).Select
'  Selection.PrintPreview
Selection.PrintOut
End Sub

Anzeige
AW: Ganze Seiten ausdrucken trotz Begrenzung
02.07.2012 13:08:50
stormlamp
Hallo Franz,
Deine dritte Zeile wird vom Debugger bemängelt. Das Makro funktioniert leider so nicht.
Es gibt einen einfachen Grund, weshalb ich den Druckbereich nicht von Hand setze: Auf einem anderen Tabellenblatt werden Lieferteile zusammengestellt, die je nach Auftrag nur wenige Positionen enthalten, aber auch mehr als eine Seite umfassen können. Das Blatt was ausgedruckt werden soll, ist die "schöne" Seite für den Empfänger. Der Druck wird auf der Seite durch eine Schaltfläche gestartet und das von Leuten, die sich nicht mit Druckbereichen beschäftigen wollen.
Deshalb soll das System per makro die Druckseiten bei Betätigung der Schaltfläche selbst ermitteln: Ist in der ersten Spalte das Formelergebnis "", dann drucke die komplette Seite inkl. Rahmen und zwar genau so viele Seiten, wie die Bedingung stimmt.
Leider habe ich bisher noch keine funktionierende Lösung.
Gruß
Hans
Anzeige
AW: Ganze Seiten ausdrucken trotz Begrenzung
02.07.2012 13:32:45
Rudi
Hallo,
dann runde anzZeilen doch auf die Seitenlänge auf.
z.B. für 48 Zeilen/Seite:
Sub drucken()
For x = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Trim(Cells(x, 1))  "" Then anzzeilen = x
Next x
Range("A1:F" & worksheetfunction.Roundup(anzzeilen/48,0)*48).Select
Selection.PrintOut Copies:=1
End Sub

Gruß
Rudi
AW: Ganze Seiten ausdrucken trotz Begrenzung
02.07.2012 14:08:34
stormlamp
Hallo Rudi,
danke, es hilft ein wenig weiter, ist jedoch noch nicht ideal, weil die Seiten unterschiedliche Längen haben.
Kann man nicht die Zeilennummer des Seitenumruchs der Seite abfragen, auf der das letzte Elemenz steht und dies dann eintragen?
Gruß
Hans
Anzeige
AW: Ganze Seiten ausdrucken trotz Begrenzung
02.07.2012 14:46:32
Rudi
Hallo,
teste mal:
Sub drucken()
Dim x As Long, AnzZeilen As Long, arrPB
GetPagebreaks arrPB
For x = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Trim(Cells(x, 1))  "" Then AnzZeilen = x
Next x
For x = 1 To UBound(arrPB)
If arrPB(x) >= AnzZeilen Then Exit For
Next
ActiveSheet.PrintOut Copies:=1, pagesfrom:=1, pagesto:=x
End Sub

Sub GetPagebreaks(arrPB)
Dim arrTmp(), HP As HPageBreak, n As Integer
Application.ScreenUpdating = False
ActiveWindow.View = xlPageBreakPreview
With ActiveSheet
With .HPageBreaks
ReDim arrTmp(1 To .Count)
End With
For Each HP In .HPageBreaks
n = n + 1
arrTmp(n) = HP.Location.Row - 1
Next
End With
ActiveWindow.View = xlNormalView
arrPB = arrTmp
End Sub

Gruß
Rudi
Anzeige
AW: Ganze Seiten ausdrucken trotz Begrenzung
02.07.2012 15:01:56
stormlamp
Hallo Rudi,
es bleibt hängen bei
ActiveSheet.PrintOut Copies:=1, pagesfrom:=1, pagesto:=x
Gruß
Hans
AW: Ganze Seiten ausdrucken trotz Begrenzung
02.07.2012 15:28:47
Rudi
Hallo,
Parameter falsch benannt.
ActiveSheet.PrintOut Copies:=1, from:=1, to:=x
Gruß
Rudi
AW: Ganze Seiten ausdrucken trotz Begrenzung
02.07.2012 15:37:52
stormlamp
Hallo Rudi,
danke vielmals, jetzt funktioniert es hervorragend! Danke für Deine Mühe und Dein Engagement.
Gruß
Hans
AW: Ganze Seiten ausdrucken trotz Begrenzung
02.07.2012 15:06:08
Rolf
Hallo Hans,
habe dein Makro um die Rahmenbildung erweitert (2 Versionen: 1x normaler Rahmen, 1x fetter Rahmen).
Bei mir funktioniert es.
Sub drucken()
For x = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Trim(Cells(x, 1))  "" Then anzzeilen = x
Next x
Range("A1:F" & anzzeilen).Select
'   erstellt einen einfachen Ramen:
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Selection.PrintOut Copies:=1
Range("B1").Select
End Sub

Sub drucken()
For x = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Trim(Cells(x, 1))  "" Then anzzeilen = x
Next x
Range("A1:F" & anzzeilen).Select
'   erstellt einen fetten Ramen
Range("C3:F16").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlMedium
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlMedium
End With
End Sub

Anzeige
AW: Ganze Seiten ausdrucken trotz Begrenzung
02.07.2012 15:31:30
stormlamp
Hallo Rolf,
die Rahmen sind bereits auf der Seite vorhanden und sollen auf jeder Druckseite auch gleich groß sein.
Bei Deiner Lösung würden die Rahmen komplett neu gezeichnet.
Wenn ich für die ursprünglich gedachte Version keine Lösung finde, werde ich eine Variante Deiner Version ausprobieren. Dazu benötige ich jedoch nur die untere Linie, da alle senkrechten Linien bereits vorhanden sind und nur abgeschnitten werden. Allerdings muss ich nach dem Druck die Linie wieder wegnehmen, da an dem Blatt weitergearbeitet werden kann.
Dein Makro habe ich dann so modifiziert, aber beim Wegnehmen laufe ich noch in den Debugger, er mag weder Weight =0 noch Weight =xlNone:
Sub drucken()
For x = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Trim(Cells(x, 1))  "" Then anzzeilen = x
Next x
Range("A1:F" & anzzeilen).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlMedium
End With
Selection.PrintOut Copies:=1
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = 0
End With
End Sub

Anzeige
AW: Ganze Seiten ausdrucken trotz Begrenzung
02.07.2012 17:15:50
Rolf
Hi,
versuch's doch einfach mal mit dem Makrorecorder und kopiere dann die gewünschten Code-Zeilen in dein Makro. Das gilt sowohl für die Erstellung eines Rahmens als auch für dessen Stornierung.
Du kannst dich da wirklich austoben. Ramenlinie links, rechts, oben, unten, fette Linie, doppelte Linie...
Gruß, Rolf

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige