AW: Zelleninhalt kopieren und einfügen
16.05.2011 07:18:20
Marc
Guten Morgen
Vielleicht mal so als erster Tip: Wenn du einen Code testen willst, dann benutz F8 um ihn schrittweise auszuführen. Wenn du dann mit der Maus auf die Variablen gehst wird dir der gerade zugewiesene Wert angezeigt.
Erklärung:
Dim z, i As Variant
z und i werden als Variable mit unterschiedlichem Inhalt deklariert.
z = Cells(Rows.Count, 2).End(xlDown).Row
Die Funktion dieser Anweisung kannst du selbst nachmachen: STRG+Pfeil nach unten
In diesem Fall gibt das leider keinen Sinn, denn hier springst du von der letzten Zeile noch _
weiter nach unten. Die Anweisung müßte lauten: Spring aus der letzen Zeile nach oben in die letzte benutzte Zeile, also:
z = Cells(Rows.Count, 2).End(xlUp).Row
For i = z To 1 Step 1
Hier beginnt eine Schleife, in deinem Fall von der letzten Zeile bis 1, schrittweise 1 nach vorn (?). Ich hoffe, du erkennst den Widerspruch. Es müßte also entweder von 1 bis z gehen (dann kann man auf Step 1 verzichten) oder von z nach 1, STEP -1
If Cells(i, 2).Value = " " Then
Beginn der Wenn-Funktion. Alles was bis End If kommt, wird bedingt ausgeführt.
In Deinem Fall wird es nur ausgeführt, wenn in Spalte "B" der entsprechenden Zeile ein Leerzeichen steht. Ein Leerzeichen ist schon mehr als nix, also würde ich schreiben If Cells(i, 2).Value = "" Then oder
If isempty(Cells(i, 2) = TRUE Then um den Zellinhalt abzufragen.
Cells(i, 2).FormulaR1C1 = Cells(i + 1, 2).FormulaR1C1
FormulaR1C1 bezieht sich auf eine Formel. Da du einen Wert kopieren möchtest, nimmst du am besten .value, da das aber die Standard-Eigenschaft ist, kannst du auch drauf verzichten. Außerdem haben wir die Reihenfolgen von "nach oben" in "nach unten" geändert.
Cells(i , 2) = Cells(i-1, 2)
End If
Ende der Bedingung
Next i
Nächster Datensatz, nächste Zeile
Alles in allem sieht´s dann so aus:
Sub ZellenFüllen()
Dim z, i As Variant
z = Cells(Rows.Count, 2).End(xlUp).Row
For i = 1 To z
If Cells(i, 2).Value = "" Then
Cells(i, 2) = Cells(i - 1, 2)
End If
Next i
End Sub
Gruß, Marc