Microsoft Excel

Herbers Excel/VBA-Archiv

Schleife in Spalte durchlaufen, Kopieren und druck

Betrifft: Schleife in Spalte durchlaufen, Kopieren und druck von: Ron
Geschrieben am: 16.10.2014 00:30:38

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

  

Betrifft: AW: Schleife in Spalte durchlaufen, Kopieren und druck von: Martin S.
Geschrieben am: 16.10.2014 06:36:51

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


  

Betrifft: ...doch einen kleinen Fehler gefunden von: Martin S.
Geschrieben am: 16.10.2014 06:41:18

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


  

Betrifft: AW: ...doch einen kleinen Fehler gefunden von: Ron
Geschrieben am: 16.10.2014 12:14:54

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


  

Betrifft: AW: ...doch einen kleinen Fehler gefunden von: Martin S.
Geschrieben am: 16.10.2014 12:21:54

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


  

Betrifft: AW: ...doch einen kleinen Fehler gefunden von: Ron
Geschrieben am: 16.10.2014 12:47:33

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


 

Beiträge aus den Excel-Beispielen zum Thema "Schleife in Spalte durchlaufen, Kopieren und druck"