Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1556to1560
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Loop bis Zelle leer ist

Loop bis Zelle leer ist
22.05.2017 17:02:09
Sandro
Hallo liebes Forum
Schon oft wurde mir hier geholfen, also hoffe ich auch jetzt wieder auf eure Hilfe.
Wie muss ich folgenden Code ergänzen, damit er so oft ausgeführt wird bis die Zelle A2 im Sheet "Stammdaten" leer ist?
Sub Daten_Üebertragen()
' Daten_Üebertragen Makro
Sheets("Aufbereitung Final").Select
Range("A2:H18").Select
Selection.Copy
Sheets("Datenzusammenstellung").Select
If Cells(1, 1).Offset(1, 0).Value = "" Then
Cells(1, 1).Offset(1, 0).Select
Else
Cells(1, 1).End(xlDown).Offset(1, 0).Select
End If
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks  _
_
:=False, Transpose:=False
Sheets("Stammdaten").Select
Rows("2:17").Delete
Sheets("Datenzusammenstellung").Select
End Sub
Vielen Dank & Gruss
Sandro

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Loop bis Zelle leer ist
22.05.2017 17:30:50
Daniel
Hi
im Prinzip so (die unnötigen Selects habe ich auch mal entfernt)

Sub Daten_Üebertragen()
Do Until Sheets("Stammdaten").Range("A2").Value = ""
Sheets("Aufbereitung Final").Range("A2:H18").Copy
Sheets("Datenzusammenstellung").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial _
Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:= _
False
Sheets("Stammdaten").Rows("2:17").Delete
Loop
End Sub
Da du den kopierten Bereich duplizierst (dh immer gleich einfügst) kannst du die Schleife auch weglassen, wenn du als Einfügebereich gleich den gesamten Zellbereich angibst.
(dh wenn du die Zellen A2:H18 kopierst und in A2:H35 einfügst, wird der Inhalt verdoppelt:
Sub Datenübertragen2()
Dim Anz As Long
Dim rngCopy As Range
Dim rngZiel As Range
Dim rngStamm As Range
Set rngCopy = Sheets("Aufbereitung Final").Range("A2:H18")
Set rngZiel = Sheets("Datenzusammenstellung").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
With Sheets("Stammdaten")
Set rngStamm = .Range("A2:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
End With
Anz = Int(rngStamm.Rows.Count / 16)
rngCopy.Copy
rngZiel.Resize(rngCopy.Rows.Count * Anz, rngCopy.Columns.Count).PasteSpecial  _
xlPasteValuesAndNumberFormats
rngStamm.EntireRow.Delete
End Sub

Gruß Daniel
Anzeige
AW: Loop bis Zelle leer ist
23.05.2017 11:01:52
Sandro
Hallo Daniel
Herzlichen Dank für deine schnelle Lösung! Variante 1 macht genau was ich möchte. Daher habe ich diese jetzt auch so übernommen.
Bei Variante 2 war das Ergebnis nicht ganz korrekt. Es wurden immer die selben Daten aufgelistet. Der Bereich in "Aufbereitung Final" ist mit INDIREKT Formeln mit "Stammdaten" verknüpft. Das heisst, wenn in Stammdaten diese 16 Zeilen gelöscht werden, stehen in "Aufbereitung Final" neue Daten.
Wenn du willst und Zeit hast, darfst du gerne einen Versuch starten mir zu erklären, wie der 2. Code funktioniert. Sonst belass ich es beim ersten, dieser funktioniert ja.
Gruss
Sandro
Anzeige
AW: Loop bis Zelle leer ist
23.05.2017 11:07:45
Daniel
Hi
wenn der kopierte Zellbereich Formeln enthält, die sich durch das Löschen der Zeilen in den Stammdaten verändern, musst du die erste Variante nehmen.
die zweite macht nur Sinn, wenn die kopierten Werte jedesmal die gleichen sind und der kopierte Bereich dupliziert wird.
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige