Zeile einfügen über VBA?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Wenn man mehrere Zeilen einfügen will fängt man am bestem an der "untersten" Stelle an und geht "rückwärts".
Denn.
Fügt man zwischen Zeile 1->2 eine weitere ein wird aus der vorigen Zeile 2 die Zeile 3.
Diese Zählveränderung muss entweder in der Schleife berücksichtigt werden.
Oder man fängt hinten an bis alle gewünschten Zeilen eingefügt sind.

vwegner 
Fragesteller
 17.03.2022, 11:25

Wie setze ich dieses "rückwärts laufen um"?

0
IchMalWiederXY  18.03.2022, 14:00
@vwegner

Die Schleife oder eine andere Lösung anders rum laufen lassen.
Ich nehme für diese Zwecke eher ein While Schleife
====

Sub ZeilenEinfuegen()

Dim ze As Long, zeL As Long

Dim max

zeL = 100 'Letzte Zeile bis die gesucht werden soll

max = zeL

For ze = max To 1 Step -1

Next ze

End Sub

0
vwegner 
Fragesteller
 21.03.2022, 11:23
@IchMalWiederXY

Ich weis nicht woran es liegt aber es hat bei der ersten Topic 100 zeilen hinzugefügt danach immer etwas weniger aber trotzdem noch sehr viele

0
IchMalWiederXY  21.03.2022, 14:14
@vwegner

Die Schleife zeigt 'nur' von unten nach oben. Wann du aufhören musst gilt es zu ergänzen.

For
If blabla then
Exit For
End if
next

0
Von einem Experten bestätigt
Sub ZeilenEinfuegen()

Dim ze As Long, zeL As Long

zeL = 100 'Letzte Zeile bis die gesucht werden soll

For ze = 1 To zeL
    If ActiveSheet.Cells(ze, 14).Value = Tabelle11.Cells(2, 2) Then
        ActiveSheet.Rows(ze).Insert
        ze = ze + 1
        zeL = zeL + 1
    End If
Next ze

End Sub

So z.B.

vwegner 
Fragesteller
 16.03.2022, 11:55

Ich habe bei zel = 10 eingegeben.
das Problem ist, welches ich vorher auch hatte dass die Excel jetzt von Zeile 1-10 Leerzeilen einfügt

0
LtLTSmash  16.03.2022, 12:11
@vwegner

Wenn in den Zeilen in spalte 14 das steht, was auf Tabelle 11 in Zelle B2 steht ist das auch richtig so.

0
vwegner 
Fragesteller
 16.03.2022, 12:40
@LtLTSmash

Ne es steht in Zeile 4, 12 und 20 momentan das Wort

0
LtLTSmash  16.03.2022, 13:23
@vwegner


Sub ZeilenEinfuegen()


Dim ze As Long, zeL As Long




zeL = 10 'Letzte Zeile bis die gesucht werden soll


For ze = 1 To zeL
    If ActiveSheet.Cells(ze, 14).Value = Tabelle11.Cells(2, 2).Value Then
        MsgBox "Füge Zeile ein in Zeile " & ze & " Wert1: " & ActiveSheet.Cells(ze, 14).Value & " Referenz:" & Tabelle11.Cells(2, 2).Value
        ActiveSheet.Rows(ze).Insert
        ze = ze + 1
        zeL = zeL + 1
    End If
Next ze




End Sub

probier das mal und guck mal, was die Messagebox anzeigt

0
vwegner 
Fragesteller
 16.03.2022, 13:31
@LtLTSmash

Füge Zeile ein in Zeile 4 Wert1: TOPIC Referenz: TOPIC

0
LtLTSmash  16.03.2022, 13:32
@vwegner

OK, dann klappt das ja, er fügt die erste Zeile in Zeile 4 ein, das wolltest du doch so.

0
vwegner 
Fragesteller
 16.03.2022, 13:35
@LtLTSmash

Ich möchte, dass er vor den Zeilen in denen "Topic" steht eine Leerzeile rein macht.
Also sozusagen Zeile 4 --> Alles andere rutscht runter. Zeile 12 bzw jetzt 13 --> Alles andere rutscht runter. undsoweiter
Aber er macht jetzt in zeile 4,5,6,7,8,9,10 eine Leerzeile und bei den anderen Topics einfach nichts. Verstehst du wie ichs meine?
Kann auch noch ein Bild in ner extra Frage hochladen.

0
LtLTSmash  16.03.2022, 13:40
@vwegner

OK, evtl konnte es am Insert Befehl liegen, probier es mal so

Sub ZeilenEinfuegen()


Dim ze As Long, zeL As Long




zeL = 10 'Letzte Zeile bis die gesucht werden soll


For ze = 1 To zeL
    If ActiveSheet.Cells(ze, 14).Value = Tabelle11.Cells(2, 2).Value Then
        MsgBox "Füge Zeile ein in Zeile " & ze & " Wert1: " & ActiveSheet.Cells(ze, 14).Value & " Referenz:" & Tabelle11.Cells(2, 2).Value
        ActiveSheet.Rows(ze).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        ze = ze + 1
        zeL = zeL + 1
    End If
Next ze




End Sub


0
LtLTSmash  16.03.2022, 13:46
@vwegner

Vielleich wäre ein vorher nachher Bild wirklich hilfreich

0
vwegner 
Fragesteller
 16.03.2022, 13:53
@LtLTSmash

Ich mach dir gleich ne extra Frage auf :)

0
vwegner 
Fragesteller
 17.03.2022, 10:35
@vwegner

Habs auch nochmal in diese Frage mit rein genommen

0
vwegner 
Fragesteller
 17.03.2022, 11:13
@vwegner

Nach etwas rumprobieren hab ich erkannt, dass es daran liegt, weil wenn in Zeile 4 eine Leerzeile eingefügt ist dann springt die Schleife auf 5. Dort steht dann wieder Topic somit wird in 5 eine Leerzeile eingefügt und alles runtergeschoben. Somit liegt auf Zeile 6 wieder Topic undso weiter.
Habe versucht es zu Lösen indem ich ze in 2er Schritten abspielen lasse aber dann funktioniert es natürlich nur bei den geraden Zahlen..

0
LtLTSmash  17.03.2022, 12:15
@vwegner

Deswegen zählt mein Code nach dem einfügen der Zeile die Variable ze und zeL eins hoch. sollte eigentlich klappen.

0
vwegner 
Fragesteller
 21.03.2022, 11:24
@LtLTSmash

hm ja rein logisch eigentlich schon. tuts nur leider nicht..

0
LtLTSmash  21.03.2022, 12:16
@vwegner

Dann am besten mal den Code von Hand durchlaufen und sich währenddessen sie Variablen anschauen

0