Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Makro so oft ausführen wie Zeilen gefüllt sind

Betrifft: Makro so oft ausführen wie Zeilen gefüllt sind von: Werner Gorski
Geschrieben am: 07.12.2015 20:04:55

Hallo Experten,
brauche eure Hilfe bei folgendem Problem:

Ich filtere eine Tabelle (Tabelle1) mittels Combobox und Autofilter. Nun möchte ich diese gefilterten Daten in eine andere Tabelle (Tabelle2) übertragen.
Das übertragen möchte ich mittels Makro durchführen. D.h. das Makro muss so oft ausgeführt werden wie gefüllte Zeilen nach dem Filtern da sind und bei jeder Ausführung eine Zeile weiter springen.

Kurz gesagt möchte aus einer Gefilterten Tabelle Sammelrechnungen für versch. Kunden erstellen.

Ist das möglich ?

  

Betrifft: AW: Makro so oft ausführen wie Zeilen gefüllt sind von: Hajo_Zi
Geschrieben am: 07.12.2015 21:10:53

Zu Crossposting lies diese Seite Hajo-Excel.de
Durch Crosspostuing werden mehrere Gruppen von Leuten mit dem gleichen Thema befasst, ohne dass sie voneinander wissen.
Naturgemäß laufen dann die Antworten, die im einen Forum "zu spät" gegeben wurden, ins Leere und bleiben ohne Resonanz.
Es reicht also, zunächst in einem Forum zu posten - wenn die Antworten dann unbefriedigend sein sollten, steht es einem anschließend immer noch offen, ein anderes Forum zu Rate zu ziehen.
Ich mache keine Werbung für andere Foren und verzichte darum auf den Link.

lese FAQ


  

Betrifft: AW: Makro so oft ausführen wie Zeilen gefüllt sind von: KlausF
Geschrieben am: 07.12.2015 21:51:48

Hallo Werner,

Sub Kopieren()
Dim i As Long
Dim lngLast As Long
lngLast = Worksheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("Tabelle2").UsedRange.ClearContents
With Worksheets("Tabelle1")
      For i = 2 To lngLast
            If .Rows(i).EntireRow.Hidden = False Then
                  .Range("A" & i).EntireRow.Copy
                  Worksheets("Tabelle2").Range("A1").PasteSpecial xlPasteValues
                  MsgBox "Daten Werden gedruckt  Zeile " & i
            End If
      Next i
Application.CutCopyMode = False
End With
End Sub

Gruß
Klaus


  

Betrifft: AW: Makro so oft ausführen wie Zeilen gefüllt sind von: Matthias
Geschrieben am: 07.12.2015 22:07:54

Hallo ihr beiden,

wenn der Autofilter aktiv ist wird mit dem einfachen Copy-Befehl alles ausgeblendete ignoriert. Das heist den ganzen Spaß mit 'Hidden' kannst man sich sparen. Dies reicht vollkommen:

Sheets("Tabelle1").Cells.Copy Sheets("Tabelle2").Range("A1")
lg Matthias


  

Betrifft: AW: Makro so oft ausführen wie Zeilen gefüllt sind von: Werner Gorski
Geschrieben am: 07.12.2015 22:10:40

Hallo Klaus,

Danke, werde ich mal einbauen.
Gruß Werner


  

Betrifft: anderer Ansatz von: KlausF
Geschrieben am: 07.12.2015 23:21:48

Hallo Matthias,

ist schon klar, aber wenn ich Sammelrechnungen erstellen will, habe ich in der Regel
eine Rechnungsvorlage, die z.b. über einen SVERWEIS auf eine Zeile befüllt
und dann einzeln ausgedruckt wird. Deshalb also mein zeilenweises Abarbeiten ...

Gruß
Klaus


  

Betrifft: AW: Makro so oft ausführen wie Zeilen gefüllt sind von: Werner Gorski
Geschrieben am: 08.12.2015 20:51:33

Hallo Klaus und Matthias,
funzt wunderbar. Ich dank euch beiden recht herzlich.
Kann euch nur weiterempfehlen

Danke und Gruß Werner


  

Betrifft: AW: Makro so oft ausführen wie Zeilen gefüllt sind von: Werner Gorski
Geschrieben am: 07.12.2015 22:23:39

Hallo Matthias,

sieht schon mal sehr gut aus.
Geht es auch in Tabelle2 für jede Zeile eine weiter zu gehen und nicht Zeile1 überschreiben.
Gruß Werner


  

Betrifft: AW: Makro so oft ausführen wie Zeilen gefüllt sind von: Matthias
Geschrieben am: 07.12.2015 22:33:53

Hallo Werner,

sicher geht das, dann sieht das nur ein wenig länger aus, denn man muss die letzte Zeile für _ jedes Blatt bestimmen:

Dim wks1 As Worksheet, wks2 As Worksheet

Set wks1 = Sheets("Tabelle1")
Set wks2 = Sheets("Tabelle2")
wks1.Rows("2:" & wks1.Cells(wks1.Rows.Count, 1).End(xlUp).Row).Copy _
    wks2.Range("A" & wks2.Cells(wks2.Rows.Count, 1).End(xlUp).Row + 1)



 

Beiträge aus den Excel-Beispielen zum Thema "Makro so oft ausführen wie Zeilen gefüllt sind"