HERBERS Excel-Forum - das Archiv
Druckrange ermitteln
Erich

Hallo EXCEL-Freunde,
möchte eine Druckrange automatisch ermitteln. Eine Codezeile kann ich nicht
richtig einstellen:

Sub aDruckrange3()
Dim LoErste As Long   ' erste Zeile zum drucken
Dim Spletzte As Integer  ' letzte spalte zum drucken
Dim Zeletzte As Integer  ' letzte Zeile zum drucken
Dim i As Long
LoErste = 5
i = 1
Spletzte = Cells(i, 255).End(xlToLeft).Column
Zeletzte = [B65536].End(xlUp).Row
''##'' wie muss diese Zeile lauten?
' hier kommt Typen unverträglich; die Zeilen / Spalten würden stimmen
Cells(("A" & LoErste), 1)(Zeletzte, Spletzte).Select
Selection.PrintOut Copies:=1, Preview:=True
End Sub

Besten Dank für eine Hilfe!
mfg
Erich
http://www.toolex.de
AW: Druckrange ermitteln
Hajo_Zi

Hallo Erich,
ich vermute mal Du willst einen Druckbereich festlegen
ActiveSheet.PageSetup.PrintArea = "$A$1:$I$69"
Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.


AW: Druckrange ermitteln
Erich

Hallo Hajo,
zuerst möchte ich den Druckbereich in der Vorschau anzeigen lassen; deshalb:
Selection.PrintOut Copies:=1, Preview:=True
Dabei soll immer der Bereich variabel ermittelt werden, je nachdem wieviele
Zeilen und Spalten belegt sind. Aber den "Select"-Bereich kriege ich nicht hin.
mfg
Erich
http://www.toolex.de
AW: Druckrange ermitteln
Hajo_Zi

Hallo Erich,
select ist in VBA zu 99% nicht notwendig. Lege den Druckbereich fest und mache dann die Vorschau.
Ich bin der Auffassung ein wenig eigen Initiative muss nun auch schon sein.
Gruß Hajo
Das Forum lebt auch von den Rückmeldungen.
AW: Druckrange ermitteln
Erich

Hallo Hajo,
mit Eigeninitiative habe ich den Code ja soweit erstellt - siehe erster Beitrag:
es geht nur um die eine Zeile die nicht funktinoiert!!
mfg
Erich
http://www.toolex.de
AW: Druckrange ermitteln
Bert

Hi,
Sub Frohe_Ostern()
With ActiveSheet
.PageSetup.PrintArea = Selection.Address
.PrintPreview
End With
End Sub

Gruß Bert
AW: Druckrange ermitteln
Erich

Hallo Bert,
besten Dank; aber mir geht es gar nicht um den Druck, sondern um die Zeile,
mit der der Druckbereich ausgewählt wird:
''##'' wie muss diese Zeile lauten?
' hier kommt Typen unverträglich; die Zeilen / Spalten würden stimmen
Cells(("A" & LoErste), 1)(Zeletzte, Spletzte).Select
Siehe erster Beitrag; weder mit Range noch mit Cells schaffe ich den Bereich
zu selektieren.
Besten Dank nochmal!
mfg
Erich
http://www.toolex.de
AW: Druckrange ermitteln
Beate

Hallo Erich,
hier eine Möglichkeit, den Druckbereich über Namensdefinition bezüglich Spalten und Zeilen zu dynamisieren:
http://www.excel-center.de/forum/read.php?f=1&i=67032&t=67025#reply_67032
Gruß,
Beate
AW: Druckrange ermitteln
Erich

Hallo Beate,
danke. Aber bei UsedRange meine ich, dass auch Zellen als belegt gelten, wenn diese ohne Inhalt
sind aber evtl. mit Formatierungen belegt sind.
Insofern erreiche ich über meine "Bereichsdefintion" nur die Zellen die auch beschrieben
sind. Allerdings komme ich einfach nicht drauf, diesen Zellbereich zu selektieren.
mfg
Erich
http://www.toolex.de
AW: Druckrange ermitteln
Josef

Hallo Erich!
Probier's mal so, ohne Select.

Sub aDruckrange3()
Dim LoErste As Long   ' erste Zeile zum drucken
Dim Spletzte As Integer  ' letzte spalte zum drucken
Dim Zeletzte As Integer  ' letzte Zeile zum drucken
Dim i As Long
LoErste = 5
i = 1
Spletzte = Cells(i, 255).End(xlToLeft).Column
Zeletzte = [B65536].End(xlUp).Row
With ActiveSheet
.PageSetup.PrintArea = Range(Cells(LoErste, 1), _
Cells(Zeletzte, Spletzte)).Address
.PrintOut Copies:=1, Preview:=True
.PageSetup.PrintArea = ""
End With
End Sub

Gruß Sepp
P.S.: Rückmeldung nicht vergessen!


AW: Druckrange ermitteln
Erich

Hallo Sepp,
danke funktioniert. Noch eine Frage:
derzeit habe ich die Zeile 1 (i=1) als Zeile eingestellt, die die meisten Spalten hat.
Gibts auch ne Möglichkeit, dies variabel zu lassen?
Wenn z.B. die Zeile 25 oder 325 die mit den meisten belegten Spalten ist?
Besten Dank nochmal!
mfg
Erich
http://www.toolex.de
AW: Druckrange ermitteln
Josef

Hallo Erich!
Das geht z.b. so.

Sub aDruckrange3()
Dim LoErste As Long   ' erste Zeile zum drucken
Dim Spletzte As Integer  ' letzte spalte zum drucken
Dim Zeletzte As Long  ' letzte Zeile zum drucken
Dim i As Long
Dim tmp() As Variant
LoErste = 5
Zeletzte = [B65536].End(xlUp).Row
For i = LoErste To Zeletzte
ReDim Preserve tmp(i - LoErste)
tmp(i - LoErste) = Cells(i, 255).End(xlToLeft).Column
Next
Spletzte = Application.Max(tmp)
With ActiveSheet
.PageSetup.PrintArea = Range(Cells(LoErste, 1), _
Cells(Zeletzte, Spletzte)).Address
.PrintOut Copies:=1, Preview:=True
.PageSetup.PrintArea = ""
End With
End Sub

Gruß Sepp
P.S.: Rückmeldung nicht vergessen!


Danke Sepp - Perfekt!!
Erich
Druckrange ermitteln
Erich

Hallo EXCEL-Freunde,
möchte eine Druckrange automatisch ermitteln. Eine Codezeile kann ich nicht
richtig einstellen:

Sub aDruckrange3()
Dim LoErste As Long   ' erste Zeile zum drucken
Dim Spletzte As Integer  ' letzte spalte zum drucken
Dim Zeletzte As Integer  ' letzte Zeile zum drucken
Dim i As Long
LoErste = 5
i = 1
Spletzte = Cells(i, 255).End(xlToLeft).Column
Zeletzte = [B65536].End(xlUp).Row
''##'' wie muss diese Zeile lauten?
' hier kommt Typen unverträglich; die Zeilen / Spalten würden stimmen
Cells(("A" & LoErste), 1)(Zeletzte, Spletzte).Select
Selection.PrintOut Copies:=1, Preview:=True
End Sub

Besten Dank für eine Hilfe!
mfg
Erich
http://www.toolex.de
AW: Druckrange ermitteln
Hajo_Zi

Hallo Erich,
ich vermute mal Du willst einen Druckbereich festlegen
ActiveSheet.PageSetup.PrintArea = "$A$1:$I$69"
Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.


AW: Druckrange ermitteln
Erich

Hallo Hajo,
zuerst möchte ich den Druckbereich in der Vorschau anzeigen lassen; deshalb:
Selection.PrintOut Copies:=1, Preview:=True
Dabei soll immer der Bereich variabel ermittelt werden, je nachdem wieviele
Zeilen und Spalten belegt sind. Aber den "Select"-Bereich kriege ich nicht hin.
mfg
Erich
http://www.toolex.de
AW: Druckrange ermitteln
Hajo_Zi

Hallo Erich,
select ist in VBA zu 99% nicht notwendig. Lege den Druckbereich fest und mache dann die Vorschau.
Ich bin der Auffassung ein wenig eigen Initiative muss nun auch schon sein.
Gruß Hajo
Das Forum lebt auch von den Rückmeldungen.
AW: Druckrange ermitteln
Erich

Hallo Hajo,
mit Eigeninitiative habe ich den Code ja soweit erstellt - siehe erster Beitrag:
es geht nur um die eine Zeile die nicht funktinoiert!!
mfg
Erich
http://www.toolex.de
AW: Druckrange ermitteln
Bert

Hi,
Sub Frohe_Ostern()
With ActiveSheet
.PageSetup.PrintArea = Selection.Address
.PrintPreview
End With
End Sub

Gruß Bert
AW: Druckrange ermitteln
Erich

Hallo Bert,
besten Dank; aber mir geht es gar nicht um den Druck, sondern um die Zeile,
mit der der Druckbereich ausgewählt wird:
''##'' wie muss diese Zeile lauten?
' hier kommt Typen unverträglich; die Zeilen / Spalten würden stimmen
Cells(("A" & LoErste), 1)(Zeletzte, Spletzte).Select
Siehe erster Beitrag; weder mit Range noch mit Cells schaffe ich den Bereich
zu selektieren.
Besten Dank nochmal!
mfg
Erich
http://www.toolex.de
AW: Druckrange ermitteln
Beate

Hallo Erich,
hier eine Möglichkeit, den Druckbereich über Namensdefinition bezüglich Spalten und Zeilen zu dynamisieren:
http://www.excel-center.de/forum/read.php?f=1&i=67032&t=67025#reply_67032
Gruß,
Beate
AW: Druckrange ermitteln
Erich

Hallo Beate,
danke. Aber bei UsedRange meine ich, dass auch Zellen als belegt gelten, wenn diese ohne Inhalt
sind aber evtl. mit Formatierungen belegt sind.
Insofern erreiche ich über meine "Bereichsdefintion" nur die Zellen die auch beschrieben
sind. Allerdings komme ich einfach nicht drauf, diesen Zellbereich zu selektieren.
mfg
Erich
http://www.toolex.de
AW: Druckrange ermitteln
Josef

Hallo Erich!
Probier's mal so, ohne Select.

Sub aDruckrange3()
Dim LoErste As Long   ' erste Zeile zum drucken
Dim Spletzte As Integer  ' letzte spalte zum drucken
Dim Zeletzte As Integer  ' letzte Zeile zum drucken
Dim i As Long
LoErste = 5
i = 1
Spletzte = Cells(i, 255).End(xlToLeft).Column
Zeletzte = [B65536].End(xlUp).Row
With ActiveSheet
.PageSetup.PrintArea = Range(Cells(LoErste, 1), _
Cells(Zeletzte, Spletzte)).Address
.PrintOut Copies:=1, Preview:=True
.PageSetup.PrintArea = ""
End With
End Sub

Gruß Sepp
P.S.: Rückmeldung nicht vergessen!


AW: Druckrange ermitteln
Erich

Hallo Sepp,
danke funktioniert. Noch eine Frage:
derzeit habe ich die Zeile 1 (i=1) als Zeile eingestellt, die die meisten Spalten hat.
Gibts auch ne Möglichkeit, dies variabel zu lassen?
Wenn z.B. die Zeile 25 oder 325 die mit den meisten belegten Spalten ist?
Besten Dank nochmal!
mfg
Erich
http://www.toolex.de
AW: Druckrange ermitteln
Josef

Hallo Erich!
Das geht z.b. so.

Sub aDruckrange3()
Dim LoErste As Long   ' erste Zeile zum drucken
Dim Spletzte As Integer  ' letzte spalte zum drucken
Dim Zeletzte As Long  ' letzte Zeile zum drucken
Dim i As Long
Dim tmp() As Variant
LoErste = 5
Zeletzte = [B65536].End(xlUp).Row
For i = LoErste To Zeletzte
ReDim Preserve tmp(i - LoErste)
tmp(i - LoErste) = Cells(i, 255).End(xlToLeft).Column
Next
Spletzte = Application.Max(tmp)
With ActiveSheet
.PageSetup.PrintArea = Range(Cells(LoErste, 1), _
Cells(Zeletzte, Spletzte)).Address
.PrintOut Copies:=1, Preview:=True
.PageSetup.PrintArea = ""
End With
End Sub

Gruß Sepp
P.S.: Rückmeldung nicht vergessen!


Danke Sepp - Perfekt!!
Erich
Bewerten Sie hier bitte das Excel-Portal