ich bastle und zermürbe mir seit 2 Tagen den Kopf, wie ich eine Schleife in folgende Aufgabenstellung bekomme? Crying or Very sad
Habe mir eine Listbox erstellt, in welcher Daten in 10 Spalten aufgeführt werden. Die Daten stammen aus einem Bereich der Tabelle2 ("Daten").
Die Listbox in mit der Option Multiselect und fmListStyleOption in den Eigenschaften eingestellt.
Ziel ist es, dass der User per Auswahl in der Listbox eine oder beliebig viele Zeilen auswählt und dann diese Zeilen im Tabellblatt2 ("Daten") und natürlich die Listbox-Zeile gelöscht werden. Folgende Procedur habe ich mir erstellt, die bei Auswahl eines einzigen Datensatzes prima funktioniert.
Private Sub CommandButton3_Click() ' Löschen
Dim i As Long
Dim intZ As Integer
Dim durchsuchen, finden As Range
Set durchsuchen = Sheets("Daten").Range("B8:L" & _
Sheets("Daten").Range("B65536").End(xlUp).Row)
For Each finden In durchsuchen
If finden.Text = TextBox6.Text Then
intZ = finden.Row
Cells(intZ, 7).EntireRow.Delete
i = ListBox1.ListIndex
ListBox1.RemoveItem (i)
Exit For
End If
Next finden
End Sub
Wenn ich nun mehrere Einträge auswähle, wird immer nur der unterste Treffer im Tabellenblatt gelöscht :-(
Ich versuche, mir seit einigen Monaten VBA im Selbststudium beizubringen, hab´auch schon manches hinbekommen, aber hier komme ich nicht auf die richtige Lösung... könnt Ihr mir weiterhelfen + mir die fehlenden Teile der korrekten Schleife kurz näher erläutern..? (möcht´s ja möglichst lernen / verstehen) .
************************************************************************************
Anbei noch ein paar Ergänzende Infos zur Funktion der Listbox.
Die Listbox ist auch mit mehreren Textboxen ausgestattet - u.a. mit einer Textbox, in welcher nach verschiedensten Eingabekriterien gesucht werden kann. Das klappt super.
Es gibt 10 Textboxen, die die Datensatzinformationen wiederspiegeln und anzeigen (z.B. Kd.-Nr., Auftrag. Nr. Standort usw.) Das läuft auch schon. Diese Textboxen dienen aber auch dazu, Änderungen im Datensatz vornehmen zukönnen (Funktion habe ich noch nicht erstellt). Mir geht es jetzt erstmal um den Lösch-Befehl (ausgewählte Datensätze in Tabelle und Listbox).
Da durch die Suchfunktion die Trefferanzahl variieren kann und daher nicht immer identisch zur Reihenfolge im Tabellenblatt sind, ist der Wert aus Textbox6 das entscheidende Kriterium, nach welchem gesucht und gelöscht werden soll, da es diesen Wert nur jeweils 1 x in allen Datensätzen geben kann (das wird schon beim Anlegen der Daten überprüft und verhindert. Alle anderen Daten können sich durchaus gleichen (weil es Kundenstammdaten sind). Daher möchte ich der Löschfunktion sagen, suche nach allen ausgewählten Datensätzen der Listbox mit dem Suchkriterium der Textbox6. Diese Werte stehen in Spalte G der Tabelle2 (Daten).
Hoffe, das ist einigermaßen nachvollziehbar?...
ps: wie muss es richtig formuliert sein, wenn ich die ausgewählten Zeilen dann im Tabellenblatt2 ("Daten") ansprechen + löschen will? Ist die Definition über "Set durchsuchen" und "intZ" ausreichend definiert?
************************************************************************************
Gruß Lars