Zum letzten 10 Elemente entfernen Ich benutzeMit VB gibt es eine bessere Möglichkeit, die letzte X Menge von Elementen aus der ListBox zu entfernen?
For i As Integer = 1 To 10
ListBox1.Items.RemoveAt(ListBox1.Items.Count - 1)
Next i
Gibt es eine bessere, eine Zeile Lösung?
EDIT:
ich sehe, dass meine Frage wird gehalten und möchte ein wenig besser erklären, was ich frage. In meinem Bemühen, den Regeln dieses Boards zu folgen, versuchte ich, die Frage kurz und auf den Punkt zu bringen und vielleicht machte es das nicht klar. Bitte denken Sie daran, dass ich VB erst seit ein paar Wochen sehr neu bin. Es gibt also eine Menge, die ich noch nicht kenne.
Ich habe einige Bedarfserfahrungen mit VBA und Excel und das hat mich dazu gebracht, die Frage zu stellen. Nehmen wir an, ich habe eine Liste von Elementen in Spalte A des Excel-Dokuments und ich muss die letzten 10 Elemente aus der Liste löschen. Vorläufig so tun, als ob es immer mehr als 10 Elemente gibt und wir müssen nicht dafür verantwortlich sein, dass es weniger gibt und dass es auch keine leeren Zellen in der Liste gibt. Der Code, den ich benutzen würde wäre:.
Range ("A999999") End (xlUp) .Offset (-10, 0) .Range. ("A1: A10") löschen Shift: = xlUp
Sehen Sie, wie es eine Ein-Zeilen-Lösung ist, ohne jede Zelle zu durchlaufen? Ich gebe es nur eine Reihe und sagte ihm, es zu löschen. Das machte mich neugierig auf VB und darauf, ob es etwas Ähnliches geben könnte, anstatt jeden einzelnen Gegenstand zu durchlaufen. Ich dachte, es könnte sein, und ich bin vielleicht aufgrund meiner Unerfahrenheit nicht damit vertraut. Grundsätzlich meine Frage ist - ist etwas so einfach wie ListBox1.Items.RemoveLast (10) in VB oder nicht existiert? Ich hoffe, dass dies einigen von euch geholfen hat zu verstehen, wo ich hergekommen bin, mit meiner Frage und danke fürs Lesen.
Es ist nur besser, wenn es korrekt ist und * Sie * wissen, wie man es schreibt und pflegt. Schreiben Sie zuerst den richtigen Code, damit er funktioniert, wenn die ListBox 9 oder weniger Elemente enthält. –
Hans Passant Könntest du bitte näher erläutern, was du mit meinem Code falsch findest? Es funktioniert für mich, um die letzten 10 Elemente aus einer ListBox zu entfernen. Ist es nur, dass es die Möglichkeit nicht berücksichtigt hat, dass es weniger Gegenstände gibt? Wenn ich das erklären müsste, würde ich den folgenden Code verwenden. Scheint es dir richtig? 'Wenn ListBox1.Items.Count> 10 Dann Für i As Integer = 1 bis 10 ListBox1.Items.RemoveAt (ListBox1.Items.Count - 1) Next i Else ListBox1.Items.Clear() Ende Wenn ' – tanbox
@HansPassant die Idee für den obigen Code ist, die Elemente in der Box zu zählen. Wenn mehr als 10 Elemente vorhanden sind, entfernen Sie die letzten 10 Elemente. Wenn die Anzahl 10 oder weniger beträgt, löschen Sie einfach die gesamte ListBox. – tanbox