Zellen per VBA markieren und löschen?

2 Antworten

Also, ich verstehe deine Ausführungen so: Es soll ein Suchwort gesucht werden, der nutzer gibt an, wie viel zellen gelöscht werden sollen (von wo soll gezählt werden?).


Beispiel:


Sub test()
Dim i, stopcounter, stopit As Integer
Dim findme As Variant
Dim gefunden As Range


'findme dem inhalt der inputbox zu weisen
'stopit der eingabe zuweisen wann gestoppt werden soll


If findme = "" Then Exit Sub
For i = ActiveSheet.Cells(1048576, 1).End(xlUp).Row To 1 Step -1


Set gefunden = Rows(i).Find(what:=findme, LookIn:=xlValues, lookat:=xlWhole)


If Not gefunden Is Nothing Then


Cells(i, 1).ClearContents
stopcounter = stopcounter + 1


End If


If stopcounter = stopit Then Exit Sub


Next i
End Sub

Hier wird jetzt von der letzten Zeile aus gesucht. Sobald die Anzahl die der Nutzer eingegeben hat gelöscht wurde, wird das Programm gestoppt.


Sollen einfach alle Inhalte mit dem Suchwort gelöscht werden, lösch alle Zeilen raus, wo stopit und/oder stopcounter steht.


Sora90 
Beitragsersteller
 05.10.2015, 08:54

Genau. Was der Nutzer eingibt ist praktisch nur die Anzahl der Zellen, die gelöscht werden sollen. Im Code mit inbegriffen ist dann das gesuchte Wort.

Muss ich bei deinem Code praktisch nur noch einrichten, dass die Zahl, die ich über die 2. Maske manuell eingebe, für i ersetzt wird? :)

0
azmd108  05.10.2015, 08:57
@Sora90

Ok, wenn dem so ist, dann musst du stopit dem Wert der 2. Maske (maximal Anzahl der zu löschendne Zeilen) zuweisen.

Es gilt allerdings zu beachten, dass in meinem Code die Tabelle von unten nach oben durchsucht wird. Das heißt, dass das Programm auch von unten an beginnt die Zellen zu löschen. Soll es von oben beginnen, muss For = 1 to ActiveSheet.Cells(1048576, 1).End(xlUp).Row Step -1 gesetzt werden. Ebenfalls wird, so wie in deinem Einganspost beschrieben, nur in der Spalte A gesucht und gelöscht.

1
Sora90 
Beitragsersteller
 05.10.2015, 09:03
@azmd108

Vielen Dank! Eine sehr hilfreiche Antwort :) Ich werde jetzt mit deinem Ansatz etwas herumexperimentieren.

Danke für deine Mühe!

0

Ja, was hast du denn bisher versucht? 


Sora90 
Beitragsersteller
 05.10.2015, 08:48

Private Sub CommandButton8_Click() Dim i As Long

For i = Cells(Rows.Count, 2).End(xlUp).Row To 1 Step -1 If Cells(i, 5) = "5CG521WS6M" Then Rows(i).Delete Next i

End Sub

Das hier hab ich bis jetzt, aber das funktioniert noch nicht so recht. Ich wollte es erstmal mit einer fixen Zahl von Zellen versuchen, bevor ich mich an die Eingabe über eine 2. Maske ranwage.

0