Zellen per VBA markieren und löschen?
Hallo,
ich bin gerade dabei ein kleines Lagerverwaltungssystem per Excel zu schreiben und ich hänge an einer Stelle. Ich will, dass wenn ich in meiner Eingabemaske einen bestimmten Button drücke, sich nochmal ein Fenster öffnet in dem ich eine Zahl eingebe (z.B. 4). Darauf sollen dann 4 Zellen in der Spalte A markiert und gelöscht werden, die einen bestimmten Inhalt haben.
Kann mir jemand weiterhelfen? :(
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.
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.
Ja, was hast du denn bisher versucht?
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.
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? :)