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

Forumthread: Aktuelle Seite drucken (VBA-Code)

Aktuelle Seite drucken (VBA-Code)
08.03.2009 18:27:46
Günther
Hallo!
Ich würde gerne ein Excel-Makro schreiben, mit dem man die aktuelle Seite drucken kann.
Per Hand kenne ich nur folgenden Weg:
In der Seitenumbruchvorschau nachschauen auf welcher Seite man steht (z.B. Seite 57) und dann von Seite 57 bis Seite 57 drucken.
Bei einer Umsetzung in VBA müsste man irgendwie bestimmen können, auf welcher Seite die ActiveCell liegt, damit man den PrintOut-Befehl passend aufrufen kann.
Herzlichen Dank im Voraus für jegliche Hinweise oder alternative Lösungsansätze.
Grüße Günther
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aktuelle Seite drucken (VBA-Code)
08.03.2009 19:08:34
Hajo_Zi
Hallo Günter,

Option Explicit
Sub AktuelleSeiteDrucken()
'   Von JensF
Dim Seite As Long
Seite = SeitenNr()
ActiveWindow.SelectedSheets.PrintOut From:=Seite, To:=Seite
End Sub
Function SeitenNr() As Long
Dim x As Long
Dim Zelle As Range
Dim HBs As Long, VBs As Long
Dim H As Long, V As Long
Set Zelle = ActiveCell
HBs = Tabelle1.HPageBreaks.Count
VBs = Tabelle1.VPageBreaks.Count
H = 1
V = 1
For x = 1 To HBs
If Tabelle1.HPageBreaks(x).Location.Row 



Anzeige
AW: Aktuelle Seite drucken (VBA-Code)
09.03.2009 19:56:31
Günther
Hallo Hajo!
Vielen Dank!! Ich hab nur Tabelle1 durch ActiveSheet ersetzt, um die Sache auf das aktuelle Tabellenblatt zu beziehen. Weißt Du zufällig, warum der Location-Befehl derart langsam ist? Bei meiner konkreten Mappe dauert es gestoppte 30 Sekunden, bis die Funktion SeitenNr() ihren Rückgabewert (z.B. 120) liefert. Ganz zu schweigen wie es aussehen würde, wenn man die Obergrenze von 1024 Seitenumbrüchen auch nur annähernd ausreizen würde. Dann steht die Maschine ein paar Minuten mit 100% CPU-Last (getestet auf einem modernen PC mit Vista & O2009 und einem älteren PC mit WinXP & O2003).
Nochmals Danke
Grüße Günther
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Aktuelle Seite drucken mit VBA in Excel


Schritt-für-Schritt-Anleitung

Um die aktuelle Seite in Excel mit VBA zu drucken, kannst du das folgende Makro verwenden. Es ermittelt die Seitenzahl, auf der sich die aktive Zelle befindet, und druckt diese dann aus.

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

  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

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

    Option Explicit
    
    Sub AktuelleSeiteDrucken()
        Dim Seite As Long
        Seite = SeitenNr()
        ActiveWindow.SelectedSheets.PrintOut From:=Seite, To:=Seite
    End Sub
    
    Function SeitenNr() As Long
        Dim x As Long
        Dim Zelle As Range
        Dim HBs As Long, VBs As Long
        Dim H As Long, V As Long
        Set Zelle = ActiveCell
        HBs = ActiveSheet.HPageBreaks.Count
        VBs = ActiveSheet.VPageBreaks.Count
        H = 1
        V = 1
        For x = 1 To HBs
            If ActiveSheet.HPageBreaks(x).Location.Row < Zelle.Row Then H = H + 1
        Next x
        For x = 1 To VBs
            If ActiveSheet.VPageBreaks(x).Location.Column < Zelle.Column Then V = V + 1
        Next x
        SeitenNr = (H - 1) * (VBs + 1) + V
    End Function
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Du kannst das Makro nun ausführen, indem du ALT + F8 drückst, das Makro AktuelleSeiteDrucken auswählst und auf Ausführen klickst.


Häufige Fehler und Lösungen

  • Problem: Das Makro druckt nicht die richtige Seite.

    • Lösung: Stelle sicher, dass die aktive Zelle auf der gewünschten Seite ist, bevor du das Makro ausführst. Überprüfe auch, ob die Seitenumbrüche korrekt gesetzt sind.
  • Problem: Das Makro benötigt zu viel Zeit.

    • Lösung: Wenn du viele Seitenumbrüche hast, kann die Berechnung der Seitenzahl lange dauern. Überlege, die Funktion SeitenNr() zu optimieren oder die Anzahl der Seitenumbrüche zu reduzieren.

Alternative Methoden

Wenn du keine VBA-Lösungen verwenden möchtest, kannst du auch die Druckoptionen in Excel nutzen:

  1. Gehe zu Datei > Drucken.
  2. Wähle unter Seitenbereich die Option Aktuelle Seite aus, um nur die aktuelle Seite zu drucken.

Praktische Beispiele

Ein Beispiel für die Verwendung des Makros könnte so aussehen:

  • Du hast ein Arbeitsblatt mit mehreren Seiten, und du möchtest die aktuelle Seite drucken, auf der du gerade arbeitest. Mit dem oben genannten VBA-Code kannst du dies schnell und effizient erledigen, ohne manuell Seitenzahlen eingeben zu müssen.

Tipps für Profis

  • Nutze ActiveSheet statt Tabelle1 im Code, um flexibler mit verschiedenen Arbeitsblättern zu arbeiten.
  • Experimentiere mit den Druckeinstellungen in Excel, um die Druckausgabe zu optimieren und Papier zu sparen.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um mehrere Seiten zu drucken? Du kannst den From- und To-Parameter in der PrintOut-Methode anpassen, um einen Bereich von Seiten zu drucken.

2. Funktioniert dieser VBA-Code in allen Excel-Versionen? Der Code sollte in den meisten modernen Excel-Versionen funktionieren. Beachte jedoch, dass die Geschwindigkeit und Leistung je nach Anzahl der Seitenumbrüche variieren kann.

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