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

Variablen Druckbereich mittels VBA einrichten

Forumthread: Variablen Druckbereich mittels VBA einrichten

Variablen Druckbereich mittels VBA einrichten
Space
Hallo Forum,
habe bisher nur ähnliche Probleme gefunden, die mir nicht weitergeholfen haben. Ich habe den folgenden Code in VBA eingegeben um über einen Button in Excel über den Standarddrucker das 2.te Tabellenblatt (Kontakte) zu drucken.
Mit einem festen Wert für den Druckbereich funktioniert alles einwandfrei. Da meine zu druckende Tabelle sich aber ständig ändert und immer mehr Zeilen (keine Spalten) hinzukommen, würde ich die Zeilen gerne abfragen lassen, sodass er bis zur ersten Zeile sucht in der kein Wert mehr ist:
Private Sub CommandButton4_Click()
'Druckbereich festlegen und drucken
Dim Zeile As Integer
Zeile = 10
Do Until Cells(Zeile, 3) = ""
Zeile = Zeile + 1
Loop
ActiveSheet.PageSetup.PrintArea = "$A$8:$R$Zeile"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Sub
Wenn ich bei - ActiveSheet.PageSetup.PrintArea = "$A$8:$R$Zeile" - anstatt Zeile z.B.: 40 angebe, dann druckt er mir von Zeile 8 - 40. Jetzt habe ich die Zeile als Variable deklariert und in eine Do .. Loop Schleife integriert (Zeilenwert ist dann richtig) und es kommt die Fehlermeldung:
Laufzeitfehler 1004 - Anwendungs- oder objektdefinierter Fehler
kann mir jemand weiterhelfen? Vielleicht muss ich die Variable Zeile auch nicht als Integer sondern anders deklarieren?
Wäre sehr dankbar für Rückmeldungen!
MfG
Space
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Variablen Druckbereich mittels VBA einrichten
12.01.2010 16:26:29
Rudi
Hallo,
Private Sub CommandButton4_Click()
'Druckbereich festlegen und drucken
Dim Zeile As Long
Zeile = Cells(10, 3).End(xlDown).Row
ActiveSheet.PageSetup.PrintArea = "$A$8:$R$" & Zeile
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Sub
Gruß
Rudi
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Variablen Druckbereich in Excel mittels VBA einrichten


Schritt-für-Schritt-Anleitung

  1. Öffne dein Excel-Dokument und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ klickst und „Einfügen“ > „Modul“ wählst.

  3. Kopiere den folgenden VBA-Code und füge ihn in das Modul ein:

    Private Sub CommandButton4_Click()
       'Druckbereich festlegen und drucken
       Dim Zeile As Long
       Zeile = Cells(10, 3).End(xlDown).Row
       ActiveSheet.PageSetup.PrintArea = "$A$8:$R$" & Zeile
       ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
    End Sub
  4. Stelle sicher, dass der Button (CommandButton4) auf deinem Excel-Blatt vorhanden ist. Wenn nicht, füge ihn über die Entwicklertools hinzu.

  5. Schließe den VBA-Editor und teste den Button, um den variablen Druckbereich zu überprüfen.


Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Dieser Fehler tritt häufig auf, wenn der Druckbereich nicht korrekt definiert ist. Stelle sicher, dass die Variable Zeile korrekt gefüllt wird, indem du die Zeile mit Cells(10, 3).End(xlDown).Row ermittelst. Achte darauf, dass in Spalte C (3) ab Zeile 10 Werte vorhanden sind.

  • Druckbereich wird nicht aktualisiert: Wenn du Änderungen an der Tabelle vornimmst, teste den Code erneut, um sicherzustellen, dass der Druckbereich dynamisch angepasst wird.


Alternative Methoden

Falls du keine VBA-Lösungen nutzen möchtest, kannst du auch die Druckbereich-Funktion in Excel verwenden:

  1. Markiere den gewünschten Bereich in deinem Arbeitsblatt.
  2. Gehe zu „Seitenlayout“ > „Druckbereich“ > „Druckbereich festlegen“.

Diese Methode ist jedoch nicht so flexibel wie die VBA-Lösung, da sie nicht automatisch auf sich ändernde Daten reagiert.


Praktische Beispiele

Ein Beispiel für die Verwendung des VBA-Codes könnte folgendermaßen aussehen:

  • Daten in Spalte C: Angenommen, du hast in Spalte C ab Zeile 10 eine Liste mit Kontakten. Der Code sucht die letzte Zeile mit einem Wert in dieser Spalte und setzt den Druckbereich entsprechend.

Wenn du beispielsweise in Zeile 15 den letzten Wert hast, wird der Druckbereich von $A$8:$R$15 gesetzt, was bedeutet, dass alle Daten bis zur Zeile 15 gedruckt werden.


Tipps für Profis

  • Debugging: Nutze die Debugging-Funktionen im VBA-Editor, um den Code Zeile für Zeile zu durchlaufen. Dies hilft dir, Fehler schnell zu identifizieren.
  • Anpassungen vornehmen: Du kannst die Startzeile (aktuell Zeile 10) und die Spalte (aktuell Spalte 3) anpassen, um den Code an deine spezifischen Anforderungen anzupassen.
  • Code optimieren: Überlege, ob du zusätzliche Bedingungen einfügen möchtest, um den Druckbereich weiter zu verfeinern, z.B. nur das Drucken von bestimmten Daten.

FAQ: Häufige Fragen

1. Warum funktioniert der Code nicht in meiner Excel-Version?
Es könnte sein, dass dein Excel nicht für Makros aktiviert ist. Stelle sicher, dass du die Makros in den Excel-Optionen aktiviert hast.

2. Kann ich den Druckbereich auch für mehrere Blätter festlegen?
Ja, du kannst den Code anpassen, um über mehrere Blätter zu iterieren. Achte darauf, den Code entsprechend zu strukturieren.

3. Was passiert, wenn die Daten in Spalte C leer sind?
Der Code wird an der ersten leeren Zeile stoppen. Achte darauf, dass die Startzeile korrekt gesetzt ist, um unerwartete Ergebnisse zu vermeiden.

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