Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Print-Area

Print-Area
05.11.2004 11:12:04
Steli
Hallo Leute,
ich habe folgendes Problem beim VBA programmieren...
Wenn ich in einer Tabelle einen festgelegten Druckbereich (in diesem Beispiel A1 bis D10 definieren möchte lauten in VBA die Zauberworte:
ActiveSheet.PageSetup.PrintArea = "$A$1:$D$10"
so weit so gut.
Wie aber gehe ich vor, wenn der Druckbereich variabel ist?
In meinem Fall handelt es sich um eine Datenbank welche zwar die gleiche Anzahl an Spalten hat, jedoch mit der Zeit in den Zeilen wächst.Wie ich den Bereich errechne ist nicht das Problem sondern wie gebe ich die richtige Formel für den DRUCKbereich an. Excel akzeptiert leider nicht:
ActiveSheet.PageSetup.PrintArea = Range(cells(1, 1) , cells(a, 4))
wobei "a" die errechnete letzte Zeile ist.
Probiert habe ich auch folgendes:
range ("a1")
ActiveCell.CurrentRegion.Select
er markiert mir zwar in der Tabelle den Bereich, ich weiß aber nun nicht wie ich im Makro nun den Befehl gebe genau den Bereich als "Printarea" zu definieren.
Kann mir jemand helfen?
Ich sage schon mal Vielen Dank im Voraus...
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Print-Area
Bert
ActiveSheet.PageSetup.PrintArea = Range(cells(1, 1) , cells(a, 4)).Address
Bert
AW: Print-Area
Steli
Bert, ich Danke Dir für diese schnelle Antwort.
und...jaaaa es funktioniert.....
Danke Danke Danke
AW: Print-Area
René
i=activesheetused.range.rows.count
ActiveSheet.PageSetup.PrintArea = "A1:D"&i
VERSUCHE ES MAL DAMIT:
KANN SEIN DASS DU EIN BISCHEN AN DER KOMBINATION RUMPROBIEREN MUSST
Anzeige
;

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

Infobox / Tutorial

Dynamische Druckbereiche in Excel VBA festlegen


Schritt-für-Schritt-Anleitung

Um in Excel VBA einen dynamischen Druckbereich festzulegen, kannst du die folgende Vorgehensweise anwenden:

  1. Definiere die letzte Zeile: Zuerst musst du die letzte Zeile deiner Daten bestimmen. Dies kannst du durch den Befehl UsedRange.Rows.Count erreichen.

    Dim i As Long
    i = ActiveSheet.UsedRange.Rows.Count
  2. Setze den Druckbereich: Verwende die PageSetup.PrintArea-Eigenschaft, um den Druckbereich basierend auf der ermittelten letzten Zeile zu definieren.

    ActiveSheet.PageSetup.PrintArea = "A1:D" & i

Das ist der grundlegende Befehl, um den Druckbereich in Excel VBA dynamisch zu setzen.


Häufige Fehler und Lösungen

  • Fehler: Run-time error: 1004

    • Lösung: Stelle sicher, dass der Bereich, den du festlegst, tatsächlich existiert. Überprüfe die Werte von i und die Anzahl der Zeilen in deinem Arbeitsblatt.
  • Fehler: Falsche Syntax bei der Angabe des Druckbereichs.

    • Lösung: Achte darauf, dass du die Address-Methode korrekt verwendest, wenn du einen Bereich dynamisch erstellst. Der korrekte Befehl lautet:
    ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(i, 4)).Address

Alternative Methoden

Es gibt verschiedene Ansätze, um den Druckbereich in Excel VBA festzulegen:

  • Verwendung von CurrentRegion: Wenn deine Daten zusammenhängend sind, kannst du auch die CurrentRegion-Eigenschaft verwenden.

    ActiveSheet.PageSetup.PrintArea = ActiveCell.CurrentRegion.Address
  • Direkte Eingabe eines Bereichs: Wenn du den Bereich manuell angibst, kannst du auch Folgendes nutzen:

    ActiveSheet.PageSetup.PrintArea = "$A$1:$D$10"

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du den Druckbereich in Excel VBA einstellen kannst:

  1. Festlegen eines festen Druckbereichs:

    ActiveSheet.PageSetup.PrintArea = "$A$1:$D$10"
  2. Dynamische Anpassung basierend auf der Anzahl der Zeilen:

    Dim lastRow As Long
    lastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    ActiveSheet.PageSetup.PrintArea = "A1:D" & lastRow
  3. Verwendung eines benannten Bereichs:

    Wenn du einen benannten Bereich hast, kannst du diesen auch verwenden:

    ActiveSheet.PageSetup.PrintArea = "MeinDruckbereich"

Tipps für Profis

  • Mit With-Anweisung arbeiten: Um den Code leserlicher zu gestalten, kannst du die With-Anweisung verwenden:

    With ActiveSheet.PageSetup
       .PrintArea = "A1:D" & lastRow
       .Orientation = xlLandscape
    End With
  • Druckbereich für mehrere Blätter: Wenn du den Druckbereich für mehrere Blätter setzen möchtest, kannst du eine Schleife verwenden.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um unerwartete Fehler während der Ausführung deines VBA-Codes abzufangen.


FAQ: Häufige Fragen

1. Wie kann ich den Druckbereich für ein bestimmtes Arbeitsblatt festlegen?
Verwende Worksheets("Tabellenname").PageSetup.PrintArea, um den Druckbereich eines spezifischen Arbeitsblatts festzulegen.

2. Kann ich mehrere Druckbereiche gleichzeitig festlegen?
Nein, Excel erlaubt nur einen Druckbereich pro Arbeitsblatt. Du musst den Druckbereich vor dem Drucken anpassen.

3. Wie kann ich den Druckbereich zurücksetzen?
Um den Druckbereich zu löschen, setze ihn einfach auf einen leeren String:

ActiveSheet.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