Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 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
Anzeige

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?!
Anzeige
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
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA Seitenlayout anpassen


Schritt-für-Schritt-Anleitung

  1. Öffne das Excel-Dokument, in dem Du das Seitenlayout anpassen möchtest.

  2. Starte den VBA-Editor mit ALT + F11.

  3. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (dein Dokument)" > Einfügen > Modul.

  4. Kopiere den folgenden VBA-Code in das Modul:

    Sub SeitenlayoutAnpassen()
        With Sheets("Bauhauptgewerbe")
            .PageSetup.PrintArea = "$A$1:$N$150"
            .PageSetup.FitToPagesWide = 1
            .PageSetup.FitToPagesTall = 4
            .ResetAllPageBreaks
            .HPageBreaks.Add Before:=.Range("A62")
            .HPageBreaks.Add Before:=.Range("A122")
        End With
    End Sub
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Führe das Makro aus: ALT + F8, wähle SeitenlayoutAnpassen und klicke auf "Ausführen".

Jetzt hast Du das Seitenlayout in Excel angepasst, sodass es auf eine Seite passt und die Seitenumbrüche korrekt gesetzt sind.


Häufige Fehler und Lösungen

  • Problem: Seitenlayout wird nicht wie gewünscht angepasst.

    • Lösung: Stelle sicher, dass Du alle Seitenumbrüche entfernt hast, bevor Du das Makro ausführst. Benutze den Code .ResetAllPageBreaks, um alle bestehenden Seitenwechsel zu löschen.
  • Problem: Der Druckbereich wird nicht berücksichtigt.

    • Lösung: Achte darauf, dass die Variable PrintArea korrekt gesetzt ist. Überprüfe die Zellreferenzen im Code.
  • Problem: Nur eine Seite wird erstellt, obwohl mehr nötig sind.

    • Lösung: Überprüfe die FitToPagesWide und FitToPagesTall Einstellungen. Diese müssen richtig gesetzt sein, um das Layout korrekt anzupassen.

Alternative Methoden

Eine alternative Methode zur Anpassung des Seitenlayouts ist die Verwendung von benutzerdefinierten Ansichten. Diese kannst Du im Menü „Ansicht“ finden und dort verschiedene Druckeinstellungen speichern. Mit einem Makro kannst Du dann schnell zwischen diesen Ansichten wechseln.

Beispiel:

Sub Anzeigen_Ansicht1()
    ActiveWorkbook.CustomViews("Ansicht1").Show ' Ansichten-Name anpassen!
End Sub

Praktische Beispiele

  1. Beispiel für den Druckbereich: Du möchtest die PrintArea für ein spezifisches Blatt anpassen:

    Sheets("Tabelle1").PageSetup.PrintArea = "$A$1:$D$50"
  2. Seitenumbruch hinzufügen: Um einen manuellen Seitenwechsel hinzuzufügen, kannst Du den folgenden Code verwenden:

    Sheets("Tabelle1").HPageBreaks.Add Before:=Sheets("Tabelle1").Range("A30")

Tipps für Profis

  • Automatisierung: Kombiniere das Seitenlayout mit anderen VBA-Funktionen, um Deine Arbeitsabläufe zu automatisieren.
  • Testen: Teste Deinen Code regelmäßig in verschiedenen Excel-Versionen, um sicherzustellen, dass er überall funktioniert.
  • Dokumentation: Kommentiere Deinen Code ausreichend, damit Du und andere Nutzer in Zukunft verstehen, was jeder Teil des Codes macht.

FAQ: Häufige Fragen

1. Wie kann ich die Blattgröße in Excel ändern? Du kannst die Blattgröße in den Seiteneinstellungen unter „Seitenlayout“ anpassen. Wähle die gewünschte Papiergröße aus.

2. Gibt es eine Möglichkeit, die Umbruchvorschau automatisch anzupassen? Ja, Du kannst die Umbruchvorschau mit VBA steuern, indem Du die PageSetup-Eigenschaften anpasst.

3. Wie entferne ich den Druckbereich in Excel? Um den Druckbereich zu entfernen, setze die PrintArea-Eigenschaft auf eine leere Zeichenfolge:

Sheets("Tabelle1").PageSetup.PrintArea = ""

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige