Variables Listenende bestimmen
04.02.2014 15:26:21
Strickliesel
ich sitze gerade vor einem VBA Problem.
Meine Aufgabe ist es, eine Excel Liste einzulesen und daraus eine .csv Datei zu erzeugen. Soweit so gut.
Nun soll aber mit der Datei noch ein bisschen was passieren, bevor sie in die CSV übertragen wird.
Beispielsweise soll, wenn in einer Spalte ein bestimmter Wert ist, eine neue Zeile hinzugefügt werden und diese mit Teilen aus der darüber befüllt werden.
z.B.:
F1|F1_001|Blabla|WERT|Blabla|WERT|Blabla|WERT|Blabla|Blablabla
F1|F1_002|Blibli|WERT|Blibli|WERT|Blibli|WERT|Blibli|Bliblibli
Dies wäre jetzt die Ausgangsdatei, die eingelesen werden soll.
Daraus gemacht werden soll:
F1|F1_001|Blabla|WERT|Blabla|Blablabla
F1|F1_001|Blabla|WERT|Blabla|Blablabla
F1|F1_001|Blabla|WERT|Blabla|Blablabla
F1|F1_002|Blibli|WERT|Blibli|Bliblibli
F1|F1_002|Blibli|WERT|Blibli|Bliblibli
F1|F1_002|Blibli|WERT|Blibli|Bliblibli
Ich mache das ganze in einer For Schleife (For i = 1 To Ende).
Ende ist hierbei die letzte Zeile.
Genau hier sitzt auch das Problem. Die letzte Zeile wird natürlich vor der For Schleife definiert:
With ActiveSheet
Ende = .Cells(Rows.Count, 4).End(xlUp).Row
End With
Dadurch das IN der For Schleife aber ja neue Zeilen hinzugefügt werden, wird in Ende leider nicht die wirklich letzte Zeile gespeichert. Nach diesem Schema sieht der Code in der For Schleife aus:
If wksInput.Range("F" & i).Value = "1" Then
wksInput.Range("F" & i).Value = "WERT"
Worksheets("Tabelle1").Rows(i + 1).Insert
Cells(i + 1, 1).Value = Cells(i, 1).Value
Cells(i + 1, 2).Value = Cells(i, 2).Value
End If
Dadurch durchläuft das Makro natürlich nicht die gesamte Tabelle, sondern hört immer mittendrin auf. Kann mir hier jemand helfen?
Wie könnte ich denn Ende so definieren, dass es die variabel hinzukommenden Zeilen mit einbezieht?
Vielen, vielen lieben Dank im Voraus!
Liebe Grüße
Strickliesel