Löschen Sie eine Zeile in Excel VBA
Ich habe dieses Stück code, mit dem man die excel-Zeile ein Element aus einer Liste und löscht Elemente aus einer Liste. Was ich will... ist das löschen der Excel-Zeile als gut.
Der code ist hier
Private Sub imperecheaza_Click()
Dim ws As Worksheet
Dim Rand As Long
Set ws = Worksheets("BD_IR")
Rand = 3
Do While ws.Cells(Rand, 4).Value <> "" And Rand < 65000
If ws.Cells(Rand, 4).Value = gksluri.Value * 1 And ws.Cells(Rand, 5).Value = gksluri.List(gksluri.ListIndex, 1) * 1 Then
ws.Range(Rand, 1).EntireRow.Delete '(here I want to delete the entire row that meets the criteria from the If statement)
gksluri.RemoveItem gksluri.ListIndex
Exit Do
End If
Rand = Rand + 1
Loop
End Sub
Hinzugefügt, wo ich ws.Bereich(Rand,1).EntireRow.Löschen ist, wo ich möchten, löschen Sie die ganze Zeile, aber ich weiß nicht, wie es zu tun. Was ich will... wenn es feststellt, dass der gleiche Wert in einer Zelle wie in einigen ausgewählten Element von meiner Liste entfernen zu können, sowohl die gesamte Zeile in excel und das Element aus der listbox. Es funktioniert, entfernen Sie das Element aus der listbox aber ich weiß nicht, wie zu entfernen die Zeile als auch
InformationsquelleAutor der Frage Andrei Ion | 2011-10-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Chris Nielsen Lösung ist einfach und funktioniert gut. Eine etwas kürzere option wäre...
...Hinweis: es gibt keine Notwendigkeit, geben Sie eine Verschiebung, wenn das löschen einer Zeile, durch definition, es ist nicht möglich, shift Links
Übrigens, meine bevorzugte Methode zum löschen von Zeilen...
...in der ersten Schleife. Ich habe dann mit einer Sort-Funktion schieben Sie diese Zeilen an der Unterseite der Daten. Der Hauptgrund für dieses ist, weil das löschen einzelner Zeilen kann eine sehr langsame Prozedur (wenn Sie löschen >100). Es stellt auch sicher, nichts wird ausgelassen, da pro Robert Ilbrink Kommentar
Können Sie lernen, den code für die Sortierung, indem Sie ein makro aufzeichnen und die Verringerung der code, wie gezeigt, in diesem Experte Excel video. Ich habe den Verdacht, dass die sauberste Methode (Range("A1:Z10").Sort Key1:=Range("A1"), Order1:=xlSortAscending/Absteigend, Header:=xlYes/No) kann nur entdeckt werden, die auf pre-2007-Versionen von Excel...aber man kann immer reduzieren 2007/2010 entsprechende code
Paar mehr Punkte...wenn Ihr die Liste nicht sortiert sind, ist durch eine Spalte und Sie behalten möchten, die Reihenfolge, kleben Sie die Nummer der Zeile 'Rand' in einer gesonderten Spalte rechts neben jeder Zeile, wie Sie die Schleife Durchlaufen. Sie würde dann Sortieren, kommentieren und zu beseitigen
Wenn Ihr Datenzeilen enthalten die Formatierung, die Sie wünschen können, finden Sie am Ende der neuen Daten-Palette, und löschen Sie die Zeilen, die Sie gelöscht früher. Das ist, damit die Dateigröße nach unten. Beachten Sie, dass eine einzige große löschen am Ende des Verfahrens nicht beeinträchtigen code Leistung in der gleichen Weise, dass das löschen einzelner Zeilen hat
InformationsquelleAutor der Antwort Ed Bolton
Besser noch, verwenden Sie union greifen alle Zeilen, die Sie löschen wollen, dann löschen Sie alle auf einmal. Die Zeilen müssen nicht fortlaufend sein.
So dass Sie nicht haben, um sorgen über die Sortierung oder die Dinge auf dem Boden.
InformationsquelleAutor der Antwort Jordan D. Karim
Ändern Sie Ihre Linie
zu
InformationsquelleAutor der Antwort chris neilsen
Etwas wie dieses wird es tun:
Also in deinem code würde das so Aussehen, so etwas wie dieses:
InformationsquelleAutor der Antwort Matt Wilko