Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Schleife in Spalte durchlaufen, Kopieren und druck

Schleife in Spalte durchlaufen, Kopieren und druck
16.10.2014 00:30:38
Ron
Hallo Ihr Excelfans,
ich brauche heute wieder mal Hilfe.
Folgendes Ziel verfolge ich:
Ich möchte in Tabelle 1 ab Zelle F5 die Spalte F bis Ende der genutzten Zeilen durchsuchen. Wenn ein Eintrag vorhanden ist, soll der Wert aus F in Tabelle 2 Ao3 kopiert werden, danach aus Tabelle 1 aus der Spalte E der gefundenen Zeile in Tabelle 2 AN3 kopiert werden und dann die Tabelle 2 ausgedruckt werden. Wie kann ich am Anfang einen Druckdialog mit einbauen, der die Wahl eines entsprechenden Druckers für die gesamte Schleife ermöglicht?
Kann jemand helfen?
Liebe Grüße
Ron

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife in Spalte durchlaufen, Kopieren und druck
16.10.2014 06:36:51
Martin
Hallo Ron,
ungestestet, aber theoretisch sollte es so klappen:
Sub Beispiel()
Dim iRow As Long, iLastRow As Long
Application.Dialogs(xlDialogPrinterSetup).Show
With Sheets("Tabelle1").Columns(6)
iLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For iRow = 5 To iLastRow
If .Cells(iRow, 6).Value  Empty Then
Sheets("Tabelle2").Range("AO3") = .Cells(iRow, 6).Value
Sheets("Tabelle2").Range("AN3") = .Cells(iRow, 7).Value
Sheets("Tabelle2").PrintOut
End If
Next
End With
End Sub
Viele Grüße
Martin

Anzeige
...doch einen kleinen Fehler gefunden
16.10.2014 06:41:18
Martin
Hallo Ron,
hatte irgendwie überlesen, habe versehentlich die Spalte danach (G) statt der Spalte davor (E) übertragen. Also hier noch einmal (hoffentlich) richtig:
Sub Beispiel()
Dim iRow As Long, iLastRow As Long
Application.Dialogs(xlDialogPrinterSetup).Show
With Sheets("Tabelle1").Columns(6)
iLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For iRow = 5 To iLastRow
If .Cells(iRow, 6).Value  Empty Then
Sheets("Tabelle2").Range("AO3") = .Cells(iRow, 6).Value
Sheets("Tabelle2").Range("AN3") = .Cells(iRow, 5).Value
Sheets("Tabelle2").PrintOut
End If
Next
End With
End Sub
Viele Grüße
Martin

Anzeige
AW: ...doch einen kleinen Fehler gefunden
16.10.2014 12:14:54
Ron
Hallo Martin,
erst einmal vielen Dank für die schnelle Meldung. Habe es einmal getestet, läuft noch nicht so richtig. Trotz Eintrag in F5 und F7 springt das Makro gleich an die End If Anforderung. Kann mir keinen Reim drauf machen. In der F Spalte sind jeweils Zahlenwerte eingetragen...
Er prüft mit:
For iRow = 5 To iLastRow
If .Cells(iRow, 6).Value Empty Then
und springt dann gleich zum Ende der IF Anweisung.
Hast Du noch eine Idee?
Grüße
Ron

Anzeige
AW: ...doch einen kleinen Fehler gefunden
16.10.2014 12:21:54
Martin
Hallo Ron,
das wahr wohl noch zu früh am morgen. Ich frage mich gerade, warum ich Columns(6) geschrieben habe.
Also ein neuer Versuch:
Sub Beispiel()
Dim iRow As Long, iLastRow As Long
Application.Dialogs(xlDialogPrinterSetup).Show
With Sheets("Tabelle1")
iLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For iRow = 5 To iLastRow
If .Cells(iRow, 6).Value  Empty Then
Sheets("Tabelle2").Range("AO3") = .Cells(iRow, 6).Value
Sheets("Tabelle2").Range("AN3") = .Cells(iRow, 5).Value
Sheets("Tabelle2").PrintOut
End If
Next
End With
End Su
Viele Grüße
Martin

Anzeige
AW: ...doch einen kleinen Fehler gefunden
16.10.2014 12:47:33
Ron
Hallo Martin,
das mit früh und spät kenne ich auch nur zu gut:). Die Columns Anweisung fand ich zwar logisch - war aber der Teufelsfuß. Vielen Dank für Deine Hilfe, passt jetzt alles!
Viele Grüße
Ron
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Schleife in Spalte durchlaufen, Kopieren und Drucken in Excel VBA


Schritt-für-Schritt-Anleitung

Um in Excel VBA eine Schleife zu erstellen, die durch eine Spalte läuft, Einträge kopiert und anschließend die Tabelle druckt, kannst Du folgendes VBA-Skript verwenden:

Sub Beispiel()
    Dim iRow As Long, iLastRow As Long
    Application.Dialogs(xlDialogPrinterSetup).Show
    With Sheets("Tabelle1")
        iLastRow = .Cells(.Rows.Count, 6).End(xlUp).Row
        For iRow = 5 To iLastRow
            If .Cells(iRow, 6).Value <> Empty Then
                Sheets("Tabelle2").Range("AO3") = .Cells(iRow, 6).Value
                Sheets("Tabelle2").Range("AN3") = .Cells(iRow, 5).Value
                Sheets("Tabelle2").PrintOut
            End If
        Next
    End With
End Sub

In diesem Skript wird zunächst der Druckdialog angezeigt, bevor die Schleife in der Spalte F von Tabelle 1 gestartet wird. Dabei werden die Werte in die entsprechenden Zellen der Tabelle 2 kopiert und anschließend die Tabelle gedruckt.


Häufige Fehler und Lösungen

  1. Fehler: Das Makro springt sofort zum End If.

    • Lösung: Überprüfe, ob Du den richtigen Vergleichsoperator verwendest. Stelle sicher, dass Du <> anstelle von = verwendest, um auf leere Zellen zu prüfen. Der korrekte Vergleich lautet:
      If .Cells(iRow, 6).Value <> Empty Then
  2. Fehler: Daten werden nicht korrekt kopiert.

    • Lösung: Achte darauf, dass Du die richtigen Spalten angibst. In diesem Fall sollte Spalte E (5) für das Kopieren des Wertes verwendet werden. Stelle sicher, dass die Zellen in der Quelle korrekt referenziert werden.

Alternative Methoden

Wenn Du lieber eine andere Methode verwenden möchtest, um durch die Spalten zu iterieren, kannst Du auch die For Each Schleife nutzen. Diese ist oft intuitiver:

Sub AlternativeBeispiel()
    Dim cell As Range
    Application.Dialogs(xlDialogPrinterSetup).Show
    For Each cell In Sheets("Tabelle1").Range("F5:F" & Sheets("Tabelle1").Cells(Rows.Count, 6).End(xlUp).Row)
        If cell.Value <> Empty Then
            Sheets("Tabelle2").Range("AO3").Value = cell.Value
            Sheets("Tabelle2").Range("AN3").Value = cell.Offset(0, -1).Value
            Sheets("Tabelle2").PrintOut
        End If
    Next cell
End Sub

Praktische Beispiele

Wenn Du mit verschiedenen Daten arbeitest, kannst Du die Schleife anpassen. Beispielsweise, um nur bestimmte Werte zu drucken:

If .Cells(iRow, 6).Value > 10 Then
    ' Kopiere und drucke nur, wenn die Bedingung erfüllt ist
End If

Tipps für Profis

  • Optimierung der Leistung: Wenn Du mit großen Datenmengen arbeitest, kann es sinnvoll sein, Application.ScreenUpdating und Application.Calculation zu deaktivieren, um die Ausführung zu beschleunigen:

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    ' Dein Code hier
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
  • Debugging: Verwende Debug.Print um Werte während der Schleife zu überprüfen. Dies hilft Dir, Fehler schneller zu finden.


FAQ: Häufige Fragen

1. Frage
Wie kann ich die Schleife anpassen, um mehrere Spalten gleichzeitig zu prüfen?
Antwort: Du kannst eine innere Schleife verwenden, um durch verschiedene Spalten zu iterieren und die Werte zu überprüfen.

2. Frage
Kann ich die Druckeinstellungen vor dem Drucken anpassen?
Antwort: Ja, Du kannst die Druckeinstellungen mit der PageSetup-Eigenschaft in Excel VBA anpassen, bevor Du den Druckbefehl ausführst.

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