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

dynamischer Druckbereich

dynamischer Druckbereich
06.05.2014 20:58:03
moods
Hallo zusammen,
ich möchte meinen Druckbereich dynamisch defininieren.
der Druckbereich sollte quasi so aussehen:
Worksheets("Tabelle1").PageSetup.PrintArea = "A1:'Spalte zählen von rechts nach links'70"
Hab schon versucht das hier einzubauen hat aber nicht geklappt :/
"A1: & Cells(70, Columns.Count).End(xlToLeft).Column)"
Weis jemand rat?
Danke und Gruß

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: dynamischer Druckbereich
06.05.2014 21:19:10
Daniel

With Worksheets("Tabelle1")
.PageSetup.PrintArea = .UsedRange.Resize(70).Address
End With

Gruß Daniel

AW: dynamischer Druckbereich
06.05.2014 21:23:22
moods
HEy Daniel,
geht leider nicht, vermute mal weil die letzten paar Spalten ohne Inhalt eine Formatierung haben oder?
Gruß

AW: dynamischer Druckbereich
06.05.2014 21:34:50
moods
noch als zusatz, wollte die erste Zeile zählen da da halt effektiv nur Namen drin stehen und somit das ganze definiert werden sollte.
Gruß

AW: dynamischer Druckbereich
06.05.2014 21:40:43
Daniel
hi
ja, die Usedrange beinhaltet auch Zellen, die nur Formatiert sind.
wenns allein von der ersten Zeile abhängt dann ggf so
... .Printarea = .Range(.Cells(1, 1), .Cells(1, .Columns.Count).End(xltoleft)).Resize(70).Address
Gruß Daniel

Anzeige
AW: dynamischer Druckbereich
06.05.2014 21:48:44
moods
Sehr genial, das läuft!! Dank dir..
einzige Problem noch, die erste Zeile ist der Text in 45° formatiert, also muss ich zählen +3 machen das man alle sieht. :/
Aber egal wo ich die +3 reinmache es gefällt ihm nicht

AW: dynamischer Druckbereich
06.05.2014 21:49:36
Daniel
wenn keine Leerzellen in Zeile 1 vorhanden sind auch so:
.PrintArea = .Cells(1, 1).Resize(70, Workshsheetfunction.CountA(.Rows(1))).Address
Gruß Daniel

AW: dynamischer Druckbereich
06.05.2014 21:51:53
moods
Leider ja, A:I ist leer in Zeile 1

AW: dynamischer Druckbereich
06.05.2014 21:51:54
Daniel
hier kannst du dann auch dein +3 platzieren.
in der ersten Lösung müsstest du mit ...End(xltoleft).Offset(0, 3) arbeiten.
gruß Daniel

Anzeige
AW: dynamischer Druckbereich
06.05.2014 21:53:27
moods
ne also das funzt nimmer...
.PageSetup.PrintArea = .Range(.Cells(1, 1), .Cells(1, .Columns.Count).End(xlToLeft).Offset(0, 3))

AW: dynamischer Druckbereich
06.05.2014 21:55:14
moods
jo alles klar... Passt!!!
Super vielen Lieben Dank!! Kannst dir auf die Schulter klopfen ;)
Wünsch dir noch ne gute Woche!

AW: dynamischer Druckbereich
06.05.2014 21:59:36
Daniel
fehlt da nicht noch das .Address am Ende?
Gruß Daniel

AW: dynamischer Druckbereich
06.05.2014 21:59:06
moods
Mal ganz anders gefragt
Gibt es auch ne Möglichkeit das über die Skalierung zumachen?
Sprich die Spalten zählen und als erste Bedienung verwenden und anschliessend soviel Zeilen wie möglich?
Gruß

AW: dynamischer Druckbereich
06.05.2014 22:05:10
Daniel
wenn du auch per Makro druckts, würde ich den Druckbereich so gross wie möglich belassen und dann einfach nur die erste Seite drucken:
.PrintOut From:=1, To:=1
ansonsten wirds schwierig, die Anzahl der Zeilen, die aufs erste Blatt passen zu berechnen.
Gruß Daniel

Anzeige
AW: dynamischer Druckbereich
06.05.2014 22:11:26
moods
Ja versteh...
geb dir mal etwas mehr Kontext. Das gleiche würde ich gern auch auf ein anderes Blatt übertragen.
Da geht es aber ab Zeile 17 los bis 424. Zeile 1-16 währen dann Wiederholungszeilen. Im Bereich D17:D424 steht das Datum vom 11.12.XX bis zum 21.12.XX (Der Kalendar überschneidet sich mit dem Vor - bzw Folgejahr). Würde mir da gern eine Userform basteln um das Ab-Datum wählen zu können ab welchem er dann drücken soll. Über den cmb wird dann der Application.Dialogs(xlDialogPrint).Show aufgerufen.
Ist das Möglich?

AW: Autofilter
06.05.2014 22:36:01
Daniel
Filtere mit dem Autofilter den Datumsbereich, welchen du sehen willst und drucke dann.
Gruß Daniel

Anzeige
AW: Autofilter
07.05.2014 16:49:56
moods
Hallo Daniel,
den Autofilter wollte ich ungern benutzen.
Hab es jetzt mal damit versucht, dann kommt aber objektvariabel oder withblock nicht festgelegt.
Private Sub CommandButton1_Click()
' Druckdialog öffnen
With Worksheets("Tabelle1")
.PageSetup.PrintArea = .Range(.Cells(.Columns(1).Find(what:=ComboBox1, lookat:=xlWhole).Row, 4), _
.Cells(1, .Columns.Count).End(xlToLeft).Offset(0, 3)).Resize(70).Address
End With
Application.Dialogs(xlDialogPrint).Show
End Sub
Gruß

AW: Autofilter
09.05.2014 07:01:37
fcs
Hallo Moods,
die Vorgabe von Datumswerten für Suchfunktionen hat unter VBA leider so ihre Tücken. Das Ergebnis kann auch noch durch die Datumsformatierung in den Zellen negativ beeinflusst sein - suche funktioniert eigentlich nur reibungslos, wenn für das Datum die Formatierung "Datum kurz" benutzt wird.
Im Code wird es auch etwas übersichtlicher, wenn man Zwischenergebnisse in Variablen speichert.
Hier mal eine Anpassung deines Makros.
Wichtig ist auch, dass das Userform geschlossen/ausgeblendet wird, bevor der Druckerdialog angezeigt wird, falls du die Seitenvorschau dort startest kommt es sonst zu einem Problem.
Unter passenden Bedingungen, die bei dir erfüllt sein sollten, kannst du auch mit dem ListIndex-Wert des in der Combobox gewählten Eintrags arbeiten, um die zugehörige Zeile im Blatt zu ermitteln.
Gruß
Franz
'Variante 1 - Speicherung von Zwischenergebnissen in Variablen
Private Sub CommandButton1_Click()
' Druckdialog öffnen
Dim Spalte_2 As Long, Zelle As Range
If Me.ComboBox1.ListIndex = -1 Then
MsgBox "Bitte erst ein Datum wählen"
Else
With Worksheets("Tabelle1")
Set Zelle = .Range("D17:D424").Find(what:=CDate(ComboBox1), lookat:=xlWhole)
If Zelle Is Nothing Then
MsgBox "Etwas hat mit der Auswahl des Datums nicht funktioniert!)"
Else
Spalte_2 = .Cells(1, .Columns.Count).End(xlToLeft).Column + 3
.PageSetup.PrintArea = .Cells(Zelle.Row, 1).Resize(70, Spalte_2).Address
Unload Me 'oder Me.Hide
Application.Dialogs(xlDialogPrint).Show
End If
End With
End If
End Sub
'Variante 2 - Startzeile aus dem Listindex des gewählten Datums ermitteln.
'funktioniert nur, wenn in D17:D424 und in der Combobox alle Tage fortlaufend und _
ohne Lücken gelistet sind
Private Sub CommandButton1_Click()
' Druckdialog öffnen
Dim Zeile_1 As Long, Spalte_2 As Long
If Me.ComboBox1.ListIndex = -1 Then
MsgBox "Bitte erst ein Datum wählen"
Else
With Worksheets("Tabelle1")
Spalte_2 = .Cells(1, .Columns.Count).End(xlToLeft).Column + 3
Zeile_1 = 17 + Me.ComboBox1.ListIndex
.PageSetup.PrintArea = .Cells(Zeile_1, 1).Resize(70, Spalte_2).Address
Unload Me 'oder Me.Hide
Application.Dialogs(xlDialogPrint).Show
End With
End If
End Sub

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige