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

Seriendruck - Zeilen überspringen

Forumthread: Seriendruck - Zeilen überspringen

Seriendruck - Zeilen überspringen
29.08.2013 17:19:10
Nicky
Hallo,
ich habe eine Personaldatenbank mit aktiven und passiven Mitarbeitern.
Nun möchte ich Briefe o.ä. nur von aktiven ausdrucken.
Ich habe einen ähnlichen Code schon von einer Archivseite von hier gefunden (https://www.herber.de/forum/archiv/388to392/389070_Seriendruck_aus_Excel_mit_Excel.html#389070), nur leider ist das Problem dieses, dass zwar inaktive Mitarbeiter nicht in das Dokument übertragen werden, jedoch wird für die Position trotzdem ein Druck ausgelöst, mit den Daten aus der vorherigen Zeile.
Bsp.
Müller Bernd aktiv
Meyer Richard inaktiv
Schulze Hildegard aktiv
Gedruckt werden mit folgendem Code nun drei Dokumente, zwei von Herrn Müller und einer von Frau Schulze. Ich möchte jedoch die nicht aktiven auch nicht gedruckt haben.
Ich bitte dringend um Hilfe, da ich derzeit leider noch kaum VBA-Kenntnisse besitze!
Vielen Dank vorab!!!
VG
Nicky

Private Sub cmdDruck_Click()
For a = 2 To Sheets("adr").Cells(1, 1).End(xlDown).Row
If CStr(Sheets("adr").Cells(a, 4)) = "aktiv" Then
Sheets("form").Cells(2, 6).Value = CStr(Sheets("adr").Cells(a, 1))
Sheets("form").Cells(3, 6).Value = CStr(Sheets("adr").Cells(a, 2))
Sheets("form").Cells(4, 6).Value = CStr(Sheets("adr").Cells(a, 3))
End If
Sheets("form").Activate
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Next a
End Sub

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Seriendruck - Zeilen überspringen
29.08.2013 18:48:38
fcs
Hallo Nicky,
du musst die Druckanweisung vor End If einfügen!
Gruß
Franz
Private Sub cmdDruck_Click()
For a = 2 To Sheets("adr").Cells(1, 1).End(xlDown).Row
If CStr(Sheets("adr").Cells(a, 4)) = "aktiv" Then
Sheets("form").Cells(2, 6).Value = CStr(Sheets("adr").Cells(a, 1))
Sheets("form").Cells(3, 6).Value = CStr(Sheets("adr").Cells(a, 2))
Sheets("form").Cells(4, 6).Value = CStr(Sheets("adr").Cells(a, 3))
Sheets("form").Activate
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End If
Next a
End Sub

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Seriendruck in Excel: Zeilen Überspringen bei Inaktiven Mitarbeitern


Schritt-für-Schritt-Anleitung

Um einen Seriendruck in Excel durchzuführen und inaktive Mitarbeiter zu überspringen, kannst du den folgenden VBA-Code verwenden:

  1. Öffne deine Excel-Datei 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" klickst und "Einfügen" > "Modul" wählst.
  3. Kopiere den folgenden Code in das Modul:
Private Sub cmdDruck_Click()
    For a = 2 To Sheets("adr").Cells(1, 1).End(xlDown).Row
        If CStr(Sheets("adr").Cells(a, 4)) = "aktiv" Then
            Sheets("form").Cells(2, 6).Value = CStr(Sheets("adr").Cells(a, 1))
            Sheets("form").Cells(3, 6).Value = CStr(Sheets("adr").Cells(a, 2))
            Sheets("form").Cells(4, 6).Value = CStr(Sheets("adr").Cells(a, 3))
            Sheets("form").Activate
            ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
        End If
    Next a
End Sub
  1. Stelle sicher, dass die Spalte 4 (D) in deinem Datenblatt den Status "aktiv" oder "inaktiv" enthält.
  2. Schließe den VBA-Editor und führe das Makro aus, indem du auf den Button klickst, den du für den Druck definiert hast.

Dieser Code sorgt dafür, dass nur aktive Mitarbeiter in das Druckdokument übertragen werden.


Häufige Fehler und Lösungen

  • Fehler: Der Druck wird trotzdem für inaktive Mitarbeiter ausgelöst.
    Lösung: Stelle sicher, dass die Druckanweisung ActiveWindow.SelectedSheets.PrintOut innerhalb des If-Blocks steht, wie im angepassten Code gezeigt. Dadurch wird der Druck nur ausgeführt, wenn der Mitarbeiter aktiv ist.

  • Fehler: Es werden leere Zeilen gedruckt.
    Lösung: Überprüfe, ob die Zellen in den Spalten korrekt ausgefüllt sind. Du kannst auch eine zusätzliche Bedingung hinzufügen, um leere Felder zu überprüfen.


Alternative Methoden

Eine alternative Methode ist die Verwendung von Word für den Seriendruck. Hierbei kannst du den Excel-Datenbank als Quelle nutzen. Du kannst den Seriendruck so einstellen, dass leere Felder übersprungen werden:

  1. Öffne Word und gehe zu „Mailings“.
  2. Wähle „Empfänger auswählen“ und wähle deine Excel-Datei aus.
  3. In den Seriendruckoptionen kannst du die Bedingung „Wenn Feld leer, dann überspringen“ aktivieren.

Diese Methode kann hilfreich sein, wenn du mehrere Zeilen in ein Dokument drucken möchtest, ohne die Logik in Excel selbst zu ändern.


Praktische Beispiele

Angenommen, du hast folgende Daten in Excel:

Name Vorname Status
Müller Bernd aktiv
Meyer Richard inaktiv
Schulze Hildegard aktiv

Mit dem obigen VBA-Code wird nur der Brief für Bernd Müller und Hildegard Schulze gedruckt, während Richard Meyer übersprungen wird.


Tipps für Profis

  • Verwendung von Variablen: Du kannst den Code effizienter gestalten, indem du Variablen für die Zelladressen verwendest. So wird der Code lesbarer.
  • Fehlerbehandlung: Füge eine Fehlerbehandlung hinzu, um sicherzustellen, dass das Makro auch bei unerwarteten Eingaben nicht abstürzt.
  • Datenschutz: Achte darauf, sensible Daten zu schützen, insbesondere wenn du mit Personaldaten arbeitest.

FAQ: Häufige Fragen

1. Wie kann ich das Skript anpassen, um mehrere Kriterien zu prüfen?
Du kannst zusätzliche If-Bedingungen innerhalb der Schleife hinzufügen, um weitere Kriterien wie Abteilungen oder Positionen zu berücksichtigen.

2. Gibt es eine Möglichkeit, den Seriendruck ohne VBA durchzuführen?
Ja, du kannst den Seriendruck auch direkt in Word durchführen, indem du die Excel-Datei als Datenquelle verwendest und die Filterfunktionen in Word nutzt.

3. Wie kann ich sicherstellen, dass leere Zeilen nicht gedruckt werden?
Verwende in deinem Excel-Datenblatt die Funktion =WENN(ISTLEER(A1);"";A1), um sicherzustellen, dass leere Zellen nicht in den Seriendruck übernommen werden.

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