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

VBA Seitenlayout anpassen

VBA Seitenlayout anpassen
Jonathan
Hey,
per VBA Code blende ich diverse Spalten ein oder aus. Nun möchte ich, dass nach jedem Aufruf der Funktion das Seitenlayout angepasst wird:
Hochformat, 1 Seite breit, 4 Seiten hoch; Seitenwechsel jeweils vor den Zeilen Nr. 56, 89, 130.
Ist das so möglich? Leider passt sich das Seitenlayout manchmal an, so dass eine händische Anpassung nötig wäre.
Würde mich über Hilfe sehr freuen. Mit dem Makrorecorder klappt das gar nicht.
VG

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA Seitenlayout anpassen
28.04.2011 14:34:26
Hajo_Zi
Hallo Jonathan,
die manuellen Seitenwechsel hast Du schoon eingefügt?

AW: VBA Seitenlayout anpassen
28.04.2011 14:44:55
Jonathan
Hey,
ja, die habe ich bereits eingefügt. Wenn die bleiben, müsste dann ja jeweils nur der Druckbereich bis zur letzten Spalte angepasst werden?!
AW: VBA Seitenlayout anpassen
28.04.2011 14:52:07
Hajo_Zi
Hallo Joanthan,
warum Druuckbereich, wilst Du Teile dr Tabelle nicht drucken?
Gruß Hajo
AW: VBA Seitenlayout anpassen
28.04.2011 15:04:59
Jonathan
Ne,
es soll alles gedruckt werden. Allerdings können so viele Spalten eingeblendet werden, dass diese nicht mehr auf die Seiten passen. Passe ich dann einfach die Seitenanzahl automatisch an (1 breit, 4 Seiten hoch), verändert sich ja auch der Seitenumbruch.
Anzeige
AW: VBA Seitenlayout anpassen
29.04.2011 09:04:04
fcs
Hallo Jonathan,
befasse dich einmal mit dem Thema "benutzerdefinierte Ansichten" im Menü "Ansicht".
Hier hast du die Möglichkeit verschiedene Ansichten eines Tabellenblatts inklusive der zugehörigen jeweils optimalen Druckeinstellungen zu speichern. Die Ansichten kannst du über den entsprechenden Dialog speichern/löschen/Anzeigen.
Falls dir der Weg über den Dialog zu mühselig ist, dann kannst du auch per Makro auf die gewünschte Ansicht wechseln.
Sub Anzeigen_Ansicht3()
' Blendet verschiedene Spalten aus, Druck-Ausgabe auf DIN A4 quer
ActiveWorkbook.CustomViews("Ansicht3").Show 'Ansichten-Name anpassen !
End Sub

Gruß
Franz
Anzeige
AW: VBA Seitenlayout anpassen
30.04.2011 15:15:18
Jonathan
Hey,
irgendwie ist das alles nicht zufriedenstellend. Mit den benutzerdef. Ansichten klappte s nicht richtig, da die Datei auch in älteren Excelversionen geöffnet wird. Zudem müsste ich dann 10 Ansichten erstellen.
Wünschenswert wäre ein VBA Code, welcher den Druckbereich definiert
.PrintArea = "$A$1:$N$150"
und über den Zeilen 62 und 122 ein Seitenumbruch einfügt. Ich habe es getestet mit:
Sub SeitEinr()
With Sheets("Bauhauptgewerbe")
With .PageSetup
.FitToPagesWide = 1
.FitToPagesTall = 3
.PrintArea = "$A$1:$N$150"
End With
.ResetAllPageBreaks
.HPageBreaks(2).Location = Range("A62")
.HPageBreaks(2).Location = Range("A122")
End With
End Sub

das klappt aber gar nicht.
Es kann doch eigentlich nicht so schwer sein, dies mit VBA zu lösen? _Ich habe so viel rum probiert - alles ohne Erfolg.
Könntet Ihr mir bitte weitere Hilfestellung geben?
VG
Anzeige
AW: VBA Seitenlayout anpassen
30.04.2011 17:28:53
fcs
Hallo Jonathan,
nach dem entfernen aller Seitenwechsel müssen neue Seitenwechsel mit der Add-Methode eingefügt werden.
Es gibt aber ein Grundproblem bei deiner Wunschliste:
mauell(fest) gesetzte Seitenwechsel werden ignoriert, wenn die Option Anpassen an X Seiten Breit, Y Seiten Hoch verwendet wird.
Manuelle Seitenwechsel werden nur berücksichtigt, wenn die Option Vergrößern/verkleiner aktiv ist und ein %-Wert eingetragen ist.
Gruß
Franz
Sub SeitEinr()
With Sheets("Bauhauptgewerbe")
With .PageSetup
.PrintArea = "$A$1:$N$150"
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 3
End With
End With
End Sub
'oder
Sub SeitEinr()
With Sheets("Bauhauptgewerbe")
.ResetAllPageBreaks 'Alle vorhandenen festen Seitenwechsel löschen
With .PageSetup
.PrintArea = "$A$1:$N$150"
.Zoom = 69
End With
'feste Seitenwechsel einfügen
.HPageBreaks.Add Before:=.Range("A62")
.HPageBreaks.Add Before:=.Range("A122")
End With
End Sub

Anzeige
AW: VBA Seitenlayout anpassen
30.04.2011 20:34:06
Jonathan
Hey,
danke für deine Antwort.
Bei dem zweiten Code besteht natürlich das Problem, dass ich den Zoomfaktor nicht weiß. Der ändert sich ja je nach Anzahl der eingeblendeten Spalten. Gibt es eine Möglichkeit, diesen zu ermitteln? Es müsste doch eigentlich mit einer Schleife klappen: prüfen, wie viele Seiten das Dokument hat, wenn größer 3, Zoomfaktor verkleinern...?! Werde es mal probieren, sofern dir dafür nicht eine elegantere Lösung einfällt.
Interessant ist bei der ersten Variante, dass mir Excel nur eine Seite erstellt, wenn ich so viele Spalten eingeblendet habe, dass alles auf eine Seite passt; die drei Seiten werden also nicht erzwungen, sondern "vorgeschlagen" - was auch nicht Sinn der Sache ist.
VG
Anzeige
AW: VBA Seitenlayout anpassen
01.05.2011 21:17:08
fcs
Hallo Jonathan,
ich hab es mal mit einer Schleife probiert.
Allerdings werden mit der Änderung des Zoomwerts nicht autmatisch die Positionen/Anzahl der Seitenwechsel aktualisiert. Deshalb hab ich den Wechsel der Ansicht in der Schleife eingebaut. Eine andere Möglichkeit hab ich nicht gefunden.
Je nach Größe der Schritte in denen der Zoom verkleinert wird dauert die Makroausführung ein paar Sekunden.
Gruß
Franz
Sub SeitEinr2()
Dim wks As Worksheet, lView As Long, oSheet As Object
Set oSheet = ActiveSheet
Set wks = Sheets("Bauhauptgewerbe")
Application.ScreenUpdating = False
With wks
.Activate
lView = Application.ActiveWindow.View
.ResetAllPageBreaks 'Alle vorhandenen festen Seitenwechsel löschen
With .PageSetup
.PrintArea = "$A$1:$N$150"
.Zoom = 100
Do Until wks.VPageBreaks.Count = 0 Or .Zoom 

Anzeige

61 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige