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

Forumthread: Druckbereich mit vba definieren

Druckbereich mit vba definieren
02.04.2014 11:17:23
Lara
Hallo,
ich habe hier ein Problem mit dem Druckbereich, bei dem mir Google nicht weiterhelfen kann.
Ich habe eine Vorlage, in die bei Eingabe einer Nummer einen Haufen Daten aus einer Datenbank eingegeben werden.
Bevor die Daten sich einfüllen sind die Zeilen 1-49 auf Seite 1, und die Zeilen 50-70 auf Seite 2. Ich habe dank Herber einen vba Code, der die Zellen automatisch an die Textgröße anpasst.
Da fängt jetzt aber mein Problem an. Dadurch das die Zellen größer werden, passt in vielen Fällen die erste Seite nicht mehr auf ein Blatt, und ein Teil wandert auf die zweite Seite. Damit habe ich zwei Probleme:
1. Excel erschafft eine dritte Seite, die aber leer ist. Der Text wird die zwei Seiten nie überschreiten, daher sollen immer nur die ersten beiden Seiten gedruckt werden.
2. Die Zeilen 51 und 52 sollen auf Seite 2 immer oben stehen! Nicht in der Kopfzeile, die ist bereits belegt, und es handelt sich um eingerahmten Text, glaube also es wäre eh nicht möglich.
Also, ist es möglich mittels vba immer nur die ersten beiden Seiten zu drucken, und den überschüssigen Text von Seite 1 unter die Zeilen 51 52 auf die zweite Seite zu packen?
Ich bin dankbar für jeden Tipp und Vorschlag.
Gruß Lara

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Druckbereich mit vba definieren
02.04.2014 11:40:38
Frank
Hallo Lara,
ich habe das mal so gelöst.
Sub Druckbereich_festlegen()
Dim iColumn As Integer, iRowL As Integer, l As Integer
iRowL = Cells(Cells.Rows.Count, 1).End(xlUp).Row
iColumn = ActiveSheet.Cells(4, Columns.Count).End(xlToLeft).Column
ActiveSheet.PageSetup.PrintArea = Range(Cells(1, iColumn), Cells(iRowL, iColumn))
End Sub
Gruß
Frank

Anzeige
AW: Druckbereich mit vba definieren
02.04.2014 12:01:20
Lara
Hallo Frank,
woher soll das Programm wissen, dass die Zeilen 51 und 52 immer oben auf der zweiten Seite stehen sollen? Ich verstehe leider nicht so viel von Programmierung, dass ich das anpassen könnte.
Gruß Lara

AW: Druckbereich mit vba definieren
02.04.2014 12:07:27
Frank
Hallo Lara,
eine Beispieldate wäre sehr hilfreich.
Gruß
Frank

Anzeige
AW: Druckbereich mit vba definieren
02.04.2014 12:23:58
Lara
Hallo Frank,
ich kann die Datei leider nicht anhängen. Normalerweise hänge ich einfach ein vereinfachtes Problem an, da ich die echten Dateien nicht rausgeben darf, aber hier lässt sich glaube ich nichts vereinfachen.
Es ist eine Excel Datei, in die mittels hunderter Verweise Daten aus einer Datenbank in die Zellen A1 bis J70 eingegeben werden. Diese Zellen vergrößern sich mit dem Text automatisch zum Beispiel von einer auf vier Zeilen. Die Anzahl der beschriebenen Zellen bleibt dabei immer genau gleich (A1-J70).
Ich habe versucht, zumindest schonmal zu verhindern, dass Excel immer eine dritte Seite erstellt wenn die Zeilen größer werden mit den Code:
Sub Druckbereich()
With ActiveSheet.PageSetup.PrintArea = "$A$1:$J$70"
End With
End Sub
Ich habe den "Druckbereich" auf einen Button gelegt zum Testen, aber in der Druckvorschau wird nach wie vor die dritte Seite angezeigt.
Gruß Lara

Anzeige
AW: Druckbereich mit vba definieren
02.04.2014 12:39:33
Frank
Hallo Lara,
versuch es mal so.
With ActiveSheet
.PageSetup.FitToPagesWide = 1
.PageSetup.FitToPagesTall = 2
End With

Gruß
Frank

AW: Druckbereich mit vba definieren
02.04.2014 13:15:32
Lara
Nein :´-( auch nach Neustart passiert nichts. Ich weiß auch nicht, warum Excel meine Bemühungen einfach ignoriert.
Gruß Lara

Anzeige
AW: Druckbereich mit vba definieren
02.04.2014 13:29:54
Frank
Hallo Lara,
ohne Datei kann ich Dir da auch nicht weiterhelfen.
Gruß
Frank

AW: Druckbereich mit vba definieren
02.04.2014 13:30:21
Rudi
Hallo,
und die Zeilen 50-70 auf Seite 2
Die Zeilen 51 und 52 sollen auf Seite 2 immer oben stehen
das widerspricht sich.
Das wird sehr kompliziert.
Da das Blatt komplett aus Formeln gefüllt wird, musst du es kopieren, alle Formeln in Inhalte umwandeln, feststellen, wo der Seitenumbruch ist, die erste Seite drucken, alle Zeilen der 1.Seite löschen, die ursprünglichen Zeilen 51 und 52 an 1 und 2 schieben, das Blatt drucken und anschließend löschen.
Gruß
Rudi

Anzeige
AW: Druckbereich mit vba definieren
02.04.2014 13:37:34
Lara
Danke für eure Hilfe!
Mein Problem scheint nicht so leicht zu lösen zu sein wie ich vermutet hatte. :-) Ich werde mir mal Gedanken machen, was ich sonst tun kann.
Gruß Lara
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Druckbereich mit VBA definieren


Schritt-für-Schritt-Anleitung

Um den Druckbereich in Excel mit VBA festzulegen, kannst du den folgenden Code verwenden. Dieser Code setzt den Druckbereich auf die Zellen A1 bis J70.

Sub Druckbereich_festlegen()
    With ActiveSheet
        .PageSetup.PrintArea = "$A$1:$J$70"
        .PageSetup.FitToPagesWide = 1
        .PageSetup.FitToPagesTall = 2
    End With
End Sub

Um das Makro auszuführen, gehe zu Entwicklertools > Makros, wähle das Makro Druckbereich_festlegen aus und klicke auf Ausführen.


Häufige Fehler und Lösungen

  1. Excel Druckbereich ausgegraut

    • Dieser Fehler tritt auf, wenn der Arbeitsblatt-Schutz aktiv ist. Deaktiviere den Schutz und versuche es erneut.
  2. Dritte leere Seite wird angezeigt

    • Stelle sicher, dass der Druckbereich richtig festgelegt ist. Verwende den Code, um den Druckbereich auf die gewünschten Zellen zu beschränken.
  3. Zeilen 51 und 52 erscheinen nicht oben auf Seite 2

    • Um dies zu lösen, musst du sicherstellen, dass die Zeilen korrekt positioniert sind. Überlege, ob du die Inhalte der ersten Seite löschen und die Zeilen 51 und 52 manuell an die gewünschte Position verschieben kannst.

Alternative Methoden

Falls du kein VBA verwenden möchtest, kannst du den Druckbereich auch manuell festlegen:

  1. Markiere den gewünschten Bereich in deinem Arbeitsblatt.
  2. Gehe zu Seitenlayout > Druckbereich > Druckbereich festlegen.
  3. Du kannst auch die Seitenansicht verwenden, um den Druckbereich visuell anzupassen.

Praktische Beispiele

Hier ist ein einfaches Beispiel, um den Druckbereich für ein Arbeitsblatt zu definieren. Angenommen, du möchtest nur die ersten beiden Seiten drucken, kannst du den folgenden Code verwenden:

Sub Druckbereich_begrenzen()
    With ActiveSheet
        .PageSetup.PrintArea = "$A$1:$J$70"
        .PageSetup.FitToPagesWide = 1
        .PageSetup.FitToPagesTall = 2
    End With
End Sub

Dieser Code stellt sicher, dass nur die ersten beiden Seiten gedruckt werden und die Zeilen 51 und 52 auf der zweiten Seite ganz oben stehen.


Tipps für Profis

  • Verwende Option Explicit am Anfang deines Codes, um sicherzustellen, dass alle Variablen deklariert sind.
  • Teste dein Makro in einer Kopie deiner Datei, um unerwünschte Änderungen zu vermeiden.
  • Nutze die Debug.Print-Anweisung, um Werte während der Ausführung zu überprüfen.

FAQ: Häufige Fragen

1. Wie kann ich den Druckbereich in Excel VBA dynamisch festlegen? Du kannst die letzte Zeile oder Spalte mit Cells(Cells.Rows.Count, 1).End(xlUp).Row finden und dann den Druckbereich basierend auf diesen Werten anpassen.

2. Warum wird der Druckbereich nicht wie gewünscht angezeigt? Überprüfe die Seiteinstellungen und stelle sicher, dass der Druckbereich korrekt definiert ist. Manchmal können auch Seitenumbrüche das Drucklayout beeinflussen.

3. Wie kann ich sicherstellen, dass der Druckbereich immer nur die ersten zwei Seiten umfasst? Verwende den Code, der FitToPagesTall auf 2 setzt, um sicherzustellen, dass Excel den Druckbereich entsprechend anpasst.

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