AW: Werte untereinander kopieren
13.02.2023 15:16:23
Daniel
Hi
so wie du das geschrieben hast, gehört nur das .Copy zum IF-Block. Das PasteSpecial gehört nicht mehr zum IF-Block und wird daher bei jedem Schleifendurchlauf ausgeführt. Wenn in dem Schleifendurchlauf das .Copy nicht ausgeführt wird, dann wird der zuletzt kopierte Wert nochmal eingefügt.
du musst also .Copy und .PasteSpecial gemeinsam in den IF-Block aufnehmen.
Wenn man mehrere Befehle für den IF-Block hat, sollte man nach dem THEN nicht weiterschreiben sondern eine neue Zeile beginnen:
If Sheets("Test").Cells(i, 5) = "1" Then
Sheets("test").Cells(i, 5).Offset(, -3).Resize(, 3).Copy
Sheets("Test").Cells(i, 10).PasteSpecial xlPasteValues
end if
wenn du keine Lücken willst, muss du für das Einfügen eine eigene Zeilenvariable mitführen, die nur dann erhöht wird, wenn die bedingung erfüllt ist:
Sub x()
Dim i As Long
Dim x as long
x = 2
For i = 2 To LetzteZeile
If Sheets("Test").Cells(i, 5) = "1" Then
Sheets("test").Cells(i, 5).Offset(, -3).Resize(, 3).Copy
Sheets("Test").Cells(x, 10).PasteSpecial xlPasteValues
x = x + 1
end if
Next i
End Sub
Gruß Daniel