Die Möglichkeit, ausgewählte Zeilen in Excel mit VBA (Visual Basic for Applications) zu löschen, ist eine sehr nützliche Funktion, um alltägliche Aufgaben zu automatisieren. Wenn Sie mit vielen Daten arbeiten und bestimmte Zeilen manuell löschen möchten, kann dies ein mühsamer und langwieriger Prozess sein.
VBA bietet eine bequeme Möglichkeit, ausgewählte Zeilen mit mehreren Codezeilen zu entfernen. Eine Möglichkeit besteht darin, die Methode zu verwenden Delete Objekts Range. Mit dieser Methode können Sie Zeilen löschen, die sich in einem Bereichsobjekt befinden, das durch eine Auswahl definiert werden kann.
Hier ist ein Beispiel für einfachen VBA-Code, mit dem Sie alle ausgewählten Zeilen im aktiven Arbeitsblatt löschen können:
Wenn dieser Code ausgeführt wird, werden alle markierten Zeilen im aktiven Arbeitsblatt ohne Warnung gelöscht. Seien Sie also vorsichtig, wenn Sie diese Funktion verwenden, da das Löschen einer Zeile in Excel eine irreversible Operation ist.
Wie lösche ich ausgewählte Zeilen in VBA Excel?
In VBA Excel können Sie ausgewählte Zeilen mithilfe des Selection-Objekts löschen. Dieses Objekt stellt einen ausgewählten Bereich von Zellen dar und ermöglicht verschiedene Auswahlvorgänge.
Sie können den folgenden Code verwenden, um ausgewählte Zeilen in VBA Excel zu löschen:
Sub УдалитьВыделенныеСтроки()Selection.EntireRow.DeleteEnd Sub
Dieser Code löscht alle Zeilen, einschließlich Inhalt und Formatierung, innerhalb des ausgewählten Zellbereichs. Wenn Sie die Formatierung beibehalten möchten, können Sie den Code wie folgt ändern:
Sub УдалитьВыделенныеСтроки()Dim rng As RangeSet rng = Selection.EntireRowrng.Delete Shift:=xlUpEnd Sub
In diesem Fall werden die Zeilen gelöscht, die Formatierung bleibt jedoch intakt. Der Code speichert zuerst den ausgewählten Bereich in einer rng-Variablen und verwendet dann die Delete-Methode mit dem Shift-Parameter:=xlUp, um die verbleibenden Zeilen nach oben zu verschieben und die gelöschten Zeilen auszufüllen.
Es wird empfohlen, den folgenden Code zu verwenden, um die Leistung zu verbessern:
Sub УдалитьВыделенныеСтроки()Application.ScreenUpdating = FalseApplication.Calculation = xlCalculationManualDim rng As RangeSet rng = Selection.EntireRowrng.Delete Shift:=xlUpApplication.ScreenUpdating = TrueApplication.Calculation = xlCalculationAutomaticEnd Sub
Dieser Code deaktiviert die Bildschirmaktualisierung und die automatische Berechnung von Formeln während des Löschvorgangs, was den Prozess erheblich beschleunigen kann.
Das obige Verfahren löscht daher alle ausgewählten Zeilen im Excel-Dokument.
Ausgewählte Zeilen abrufen
Um ausgewählte Zeilen in VBA Excel zu löschen, müssen Sie zuerst die Informationen zu den ausgewählten Zellen und Zeilen abrufen. Dies kann mit dem integrierten Selection-Objekt erfolgen.
Das Selection-Objekt stellt die aktuelle Auswahl im aktiven Arbeitsblatt dar. Es ermöglicht den Zugriff auf ausgewählte Zellen, Zeilen und Spalten.
Sie können die EntireRow-Methode verwenden, um die ausgewählten Zeilen abzurufen. Es gibt ein Range-Objekt zurück, das die gesamte Zeile darstellt, in der sich die ausgewählte Zelle befindet.
Sub DeleteSelectedRows()Dim selectedRange As RangeDim selectedRows As RangeDim row As Range' Получаем выделенную областьSet selectedRange = Selection' Перебираем каждую ячейку из выделенной областиFor Each row In selectedRange.Rows' Полностью выделяем строку, в которой находится ячейкаSet selectedRows = row.EntireRow' Удаляем выделенную строкуselectedRows.DeleteNext rowEnd Sub
Durch die Ausführung dieses Codes werden alle ausgewählten Zeilen im aktiven Arbeitsblatt gelöscht.
Verwenden einer Schleife zum Löschen von Zeilen
Sie können eine Schleife verwenden, um alle ausgewählten Zeilen in einem Excel-Dokument mithilfe von VBA zu löschen. Hier ist ein Beispielcode, der dieses Konzept veranschaulicht:
Sub УдалитьВыделенныеСтроки()Dim выделенная_строка As Range' Цикл для удаления всех выделенных строкFor Each выделенная_строка In Selection.Rowsвыделенная_строка.DeleteNext выделенная_строкаEnd Sub
In diesem Beispiel wird eine For Each-Schleife verwendet, um jede Zeile im Selection-Bereich zu durchlaufen.Rows . Dann wird jede ausgewählte Zeile mit der Delete-Methode gelöscht.
Führen Sie die folgenden Schritte aus, um diesen Code zu verwenden:
- Öffnen Sie in Excel das Dokument, in dem Sie die ausgewählten Zeilen löschen möchten.
- Markieren Sie die Zeilen, die Sie löschen möchten.
- Drücken Sie Alt + F11, um den VBA-Editor zu öffnen.
- Fügen Sie den obigen Code in das VBA-Modul ein.
- Schließen Sie den VBA-Editor.
Nachdem Sie diese Schritte ausgeführt haben, ist der Code einsatzbereit. Um die ausgewählten Zeilen zu löschen, müssen Sie das Makro einfach mit der Tastenkombination Alt + F8 oder über die Registerkarte "Entwickler" -> "Makros" ausführen. Nach dem Ausführen des Makros werden alle ausgewählten Zeilen aus dem Excel-Dokument entfernt.
Beachten Sie, dass Sie vor der Verwendung dieses Codes ein Excel-Dokument sichern müssen, um die ursprünglichen Daten wiederherstellen zu können, wenn etwas schief geht.
Überprüfung der Löschbedingung
Bevor Sie mit dem Löschen der ausgewählten Zeilen beginnen, müssen Sie eine Bedingungsüberprüfung durchführen, um sicherzustellen, dass die Zeilen bestimmte Kriterien erfüllen. Dadurch wird verhindert, dass unerwünschte Daten gelöscht werden, die möglicherweise wichtig sind.
Sie können verschiedene Methoden und Funktionen in VBA Excel verwenden, um die Bedingung zu überprüfen. Sie können beispielsweise den Wert einer bestimmten Zelle überprüfen oder die Werte mehrerer Zellen miteinander vergleichen.
Beispielcode, um zu überprüfen, ob ein Zellenwert einem bestimmten Kriterium entspricht:
Sub УдалитьСтроки()Dim Ячейка As Range' Перебор всех выделенных строкFor Each Ячейка In Selection' Проверка значения ячейкиIf Ячейка.Value = "Условие" Then' Удаление строкиЯчейка.EntireRow.DeleteEnd IfNext ЯчейкаEnd Sub
In diesem Beispiel werden alle ausgewählten Zellen durchforstet und deren Wert überprüft. Wenn der Zellenwert einer bestimmten Bedingung entspricht (in diesem Fall "Bedingung"), wird die gesamte Zeile, in der sich die Zelle befindet, gelöscht.
Daher sollten Sie die Bedingung sorgfältig testen und überprüfen, bevor Sie die ausgewählten Zeilen löschen, um sicherzustellen, dass die ausgewählten Daten korrekt sind, um sie zu löschen.
Hinzufügen einer Schaltfläche zum Löschen von Zeilen
1. Öffnen Sie Visual Basic für Applikationen (VBA) in Excel, indem Sie auf klicken Alt + F11.
2. Suchen Sie auf der linken Seite des VBA-Fensters nach dem Arbeitsblatt, in dem Sie eine Schaltfläche zum Löschen von Zeilen hinzufügen möchten.
3. Doppelklicken Sie auf ein Arbeitsblatt, um den Code-Editor für dieses Arbeitsblatt zu öffnen.
4. Der folgende Code fügt die Schaltfläche Zeilen löschen hinzu und definiert das Verfahren zum Löschen der ausgewählten Zeilen:
Sub DeleteSelectedRows()Dim SelectionRange As RangeOn Error Resume NextSet SelectionRange = Selection.SpecialCells(xlCellTypeVisible)On Error GoTo 0If Not SelectionRange Is Nothing ThenSelectionRange.EntireRow.DeleteEnd IfEnd SubSub AddDeleteButton()Dim Btn As ButtonSet Btn = ActiveSheet.Buttons.Add(10, 10, 100, 20)With Btn.Name = "BtnDeleteRows".Caption = "Удалить строки".OnClick = "DeleteSelectedRows"End WithEnd Sub
5. Schließen Sie den VBA-Codeeditor, und kehren Sie zum Excel-Arbeitsblatt zurück.
6. Im Arbeitsblatt sehen Sie die Schaltfläche Zeilen löschen. Wenn Sie darauf klicken, werden alle ausgewählten Zeilen in der Tabelle gelöscht.
Sie haben also eine Schaltfläche zum Löschen von Zeilen mit VBA in Excel hinzugefügt. Benutzer können jetzt mit dieser Schaltfläche Zeilen direkt auf dem Arbeitsblatt löschen.
Löschen rückgängig machen
Wenn Sie ausgewählte Zeilen in VBA Excel mithilfe von Code löschen, können Sie die Funktion zum Rückgängig Machen des Löschvorgangs hinzufügen. Dazu können Sie das Application-Objekt und seine Undo-Methode verwenden.
Mit der Undo-Methode können Sie die letzte Aktion eines Benutzers rückgängig machen. In diesem Fall können Sie dem Benutzer nach dem Löschen der Zeilen die Möglichkeit geben, diese Aktion rückgängig zu machen, wenn er feststellt, dass das Löschen falsch oder unerwünscht war.
Wenn Sie dem Löschcode für ausgewählte Zeilen eine Löschfunktion hinzufügen möchten, müssen Sie nach dem Löschen die folgende Codezeile hinzufügen:
Application.Undo
Dieser Code macht die letzte Aktion des Benutzers rückgängig, die in diesem Fall das Löschen von Zeilen ist. Nachdem der Code ausgeführt wurde, werden die gelöschten Zeilen wiederhergestellt.
Beispiel für die Verwendung der Undo-Methode zum Rückgängig Machen eines Löschvorgangs:
Sub УдалитьСтроки()' Код удаления выделенных строк' Предоставить пользователю возможность отменить удалениеIf MsgBox("Вы действительно хотите удалить выделенные строки?", vbYesNo) = vbNo ThenApplication.Undo ' Отменить удалениеEnd IfEnd Sub
In diesem Beispiel wird der Benutzer aufgefordert, die Aktion zu bestätigen, bevor er Zeilen löscht. Wenn der Benutzer auf "Nein" klickt, wird das Löschen mit der Undo-Methode rückgängig gemacht.
Daher können Sie mit der Undo-Methode die Funktion zum Rückgängig Machen von Löschungen bei Vorgängen mit ausgewählten Zeilen in Excel in VBA hinzufügen.
Zusammenfassung
In diesem Artikel haben wir uns mit dem Entfernen ausgewählter Zeilen in VBA Excel befasst. Das Hauptwerkzeug, das wir verwendeten, war das Excel-Objektmodell, mit dem wir programmgesteuert mit Daten und Tabellenelementen interagieren können.
Um zu beginnen, haben wir eine Prozedur definiert, die das Löschen der ausgewählten Zeilen durchführt. Wir haben dann eine Schleife verwendet, um alle ausgewählten Zellen zu durchlaufen und die zu löschenden Zeilennummern zu erhalten.
Danach haben wir die Methode "EntireRow" verwendet, um die vollständige Zeichenfolge nach Nummer zu erhalten, und die Methode "Delete", um sie zu löschen. Mit dieser Methode haben wir alle ausgewählten Zeilen aus der Tabelle entfernt.
Am Ende haben wir eine Variable vom Typ "Range" auf "Nothing" gesetzt, um Ressourcen freizugeben und Speicherlecks zu vermeiden.
Das Löschen ausgewählter Zeilen in VBA Excel ist daher eine einfache und effektive Möglichkeit, unnötige Daten aus einer Tabelle zu entfernen. Mit dem oben beschriebenen Ansatz können Sie Zeilen in Ihrem VBA Excel-Projekt einfach löschen.