Supportnet / Forum / Tabellenkalkulation
Makro zum löschen
Frage
Hallo,
dringendes Problem:
Ich will in einer bestimmten Reihenfolge Zeilen löschen. Das ab einer bestimmten Zeile die ich markiere. Dann jedoch immer mit den gleichen Zeilenabständen.
Für diesen Arbeitschritt gibt es doch sicherlich ein Makro was man konstruieren kann?
Also 3 Zeilen makieren dann löschen
dann 2 Zeilen weiter runter
dann 6 Zeieln makieren und löschen
wieder 3 weiter runter
12 löschen...
Wie lauten da die Befehle?
Antwort 1 von Nachtrabe
Hallo Christian,
an sich ist es kein Problem mit
eine Zeile zu löschen.
Zunächst schreibst du, daß die Abstände immer gleich sind, in deinem Beispiel jedoch sind sie es nicht. Auch die Anzahl an Zeilen, die du löschen willst, ist unterschiedlich.
Vielleicht beschreibst du es etwas genauer, dann kann ich dir mehr helfen.
Grüße
Nachtrabe
an sich ist es kein Problem mit
Sub ZeileLöschen
Selection.EntireRow.Delete
End Sub
eine Zeile zu löschen.
Zunächst schreibst du, daß die Abstände immer gleich sind, in deinem Beispiel jedoch sind sie es nicht. Auch die Anzahl an Zeilen, die du löschen willst, ist unterschiedlich.
Vielleicht beschreibst du es etwas genauer, dann kann ich dir mehr helfen.
Grüße
Nachtrabe
Antwort 2 von Ibue
Hallo,
ich hatte ein ähnliches Problem und habe hier im forum ein passendes Makro gefunden, welches ich mir dann von Günther habe noch umschreiben lassen, so das es für meine Wünsche passt.
Das Makro:
Option Explicit
Sub test()
Dim i As Integer
Dim n As Integer
i = Cells(Rows.Count, 1).End(xlUp).Row
For n = i To 1 Step -1
If Cells(n, 1).Value = -1 Then
Rows(n).Select
Selection.Delete Shift:=xlUp
End If
Next
End Sub
Ich habe einfach eine Weitere Spalte eingefügt dann über eine Wenn funktion festgelegt was passieren soll wenn eine flascher Wert in einer Zeile steht.
Bei einem falschen Wert trägt die Wenn funktion -1 in das Feld ein und obenstehendes Makro löscht alle Zeilen mit dem Wert -1
If Cells(n, 1).Value = -1 Then <-- hier muss die Spalte angegeben werden 1 steht für 2 für B usw.
war einfach als ich dachte.
die wenn funktion ist die hier:
wenn(Links("Zelle";1)="R";-1;"Zelle"
"Zelle" steht für A1 zum Beispiel
und R ist das erste Zeichen von Links.
R kann auch 1 oder C usw. heissen
ich hatte ein ähnliches Problem und habe hier im forum ein passendes Makro gefunden, welches ich mir dann von Günther habe noch umschreiben lassen, so das es für meine Wünsche passt.
Das Makro:
Option Explicit
Sub test()
Dim i As Integer
Dim n As Integer
i = Cells(Rows.Count, 1).End(xlUp).Row
For n = i To 1 Step -1
If Cells(n, 1).Value = -1 Then
Rows(n).Select
Selection.Delete Shift:=xlUp
End If
Next
End Sub
Ich habe einfach eine Weitere Spalte eingefügt dann über eine Wenn funktion festgelegt was passieren soll wenn eine flascher Wert in einer Zeile steht.
Bei einem falschen Wert trägt die Wenn funktion -1 in das Feld ein und obenstehendes Makro löscht alle Zeilen mit dem Wert -1
If Cells(n, 1).Value = -1 Then <-- hier muss die Spalte angegeben werden 1 steht für 2 für B usw.
war einfach als ich dachte.
die wenn funktion ist die hier:
wenn(Links("Zelle";1)="R";-1;"Zelle"
"Zelle" steht für A1 zum Beispiel
und R ist das erste Zeichen von Links.
R kann auch 1 oder C usw. heissen
Antwort 3 von nighty
hi Christjan :)
wie gewuenscht :))
gruss nighty
wie gewuenscht :))
gruss nighty
Option Explicit
Sub makro01()
Dim zaehler As Long
Dim zaehler0 As Long
Dim zaehler1 As Long
Dim zaehler2 As Long
zaehler0 = 2
zaehler1 = 3
zaehler2 = Selection.Row
For zaehler = zaehler2 To Cells(Rows.Count, 1).End(xlUp).Row
If zaehler2 + zaehler1 < Cells(Rows.Count, 1).End(xlUp).Row Then
Range("A" & zaehler2 & ":A" & zaehler2 + zaehler1 - 1).EntireRow.Delete
zaehler2 = zaehler2 + zaehler0
zaehler0 = zaehler0 + 1
zaehler1 = zaehler1 * 2
Else
Exit For
End If
Next zaehler
End Sub