Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA - Zellen löschen

VBA - Zellen löschen
22.06.2009 16:24:03
gegs2
Hallo,
ich bin auf der Suche nach einem Makro welches mir Zellen aus meiner Tabelle löscht. Es soll bei Spalte C von oben her anfangen zu suchen (bis Spalte AF), und alle Zellen löschen und nach oben verschieben bei welchen der Inhalt der Zelle nicht mit einem kleinen "c" beginnt.
Ist so etwas möglich?
Danke für Eure Hife
Gerhard
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Zellen löschen
22.06.2009 16:29:59
Hajo_Zi
Hallo Gerhard,
benutze doch Autofilter und kopiere das Ergebnis.

AW: VBA - Zellen löschen
22.06.2009 16:46:19
Helmut
Hallo Gerhard,
etwa so
Option Explicit

Sub test()
Dim i As Long
Dim j As Long
Dim myLastRow As Long
For i = 3 To 32
myLastRow = IIf(IsEmpty(Cells(Rows.Count, i)), Cells(Rows.Count, i).End(xlUp).Row, Rows. _
Count)
For j = myLastRow To 1 Step -1
If Cells(j, i).Value = "c" Then Cells(j, i).Delete
Next j
Next i
End Sub


Grüße
Helmut

Anzeige
AW: VBA - Zellen löschen
22.06.2009 16:50:22
Hajo_Zi
Hallo Helnmut,
eher so
If left(Cells(j, i).Value,1) = "c" Then Cells(j, i).Delete Shift:=xlUp
aber ich vermute ganz so meint Helmut das nicht.
Gruß Hajo
AW: VBA - Zellen löschen
23.06.2009 08:51:59
gegs2
Vielen Dank für die Antworten, aus beiden Codes hab ich mír nun die Lösung gebastelt
Option Explicit

Sub test()
Dim i As Long
Dim j As Long
Dim myLastRow As Long
For i = 2 To 35
myLastRow = IIf(IsEmpty(Cells(Rows.Count, i)), Cells(Rows.Count, i).End(xlUp).Row, Rows. _
Count)
For j = myLastRow To 4 Step -1
If Left(Cells(j, i).Value, 1)  "c" Then Cells(j, i).Delete Shift:=xlUp
Next j
Next i
End Sub


Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Zellen in Excel mit VBA löschen und nach oben verschieben


Schritt-für-Schritt-Anleitung

Um Zellen in Excel mit VBA zu löschen und die leeren Zellen nach oben zu verschieben, kannst du den folgenden VBA-Code verwenden. Dieser Code durchsucht einen definierten Bereich (in diesem Fall von Spalte C bis Spalte AF) und löscht alle Zellen, deren Inhalt nicht mit dem Buchstaben "c" beginnt.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code in das Modul ein:

    Sub test()
        Dim i As Long
        Dim j As Long
        Dim myLastRow As Long
        For i = 3 To 32
            myLastRow = IIf(IsEmpty(Cells(Rows.Count, i)), Cells(Rows.Count, i).End(xlUp).Row, Rows.Count)
            For j = myLastRow To 1 Step -1
                If Left(Cells(j, i).Value, 1) <> "c" Then Cells(j, i).Delete Shift:=xlUp
            Next j
        Next i
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Drücke ALT + F8, wähle test aus und klicke auf Ausführen.

Dieses Makro wird die Zellen in dem angegebenen Bereich löschen und die leeren Zellen nach oben verschieben.


Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 1004: Anwendung oder Objekt definiert Fehler"

    • Lösung: Stelle sicher, dass der Bereich, den du bearbeitest, gültig ist und dass du die richtigen Spalten und Zeilen im Code angegeben hast.
  • Fehler: "Zellen werden nicht gelöscht"

    • Lösung: Überprüfe, ob die Bedingung in der If-Anweisung korrekt definiert ist. Die korrekte Syntax lautet If Left(Cells(j, i).Value, 1) <> "c" Then.

Alternative Methoden

Wenn du keine VBA-Makros verwenden möchtest, kannst du auch den Autofilter nutzen:

  1. Wähle die gesamte Tabelle aus.
  2. Gehe zu Daten > Filtern und aktiviere die Filteroption.
  3. Filtere die Spalte C nach dem Buchstaben "c".
  4. Wähle die gefilterten Zeilen aus und lösche sie manuell.

Diese Methode ist einfacher, erfordert jedoch manuelle Schritte und kann bei großen Datenmengen zeitaufwändig sein.


Praktische Beispiele

Hier ist ein Beispiel für eine Modifikation des Codes, um auch leere Zellen zu löschen:

Sub deleteEmptyAndSpecificCells()
    Dim i As Long
    Dim j As Long
    Dim myLastRow As Long
    For i = 3 To 32
        myLastRow = IIf(IsEmpty(Cells(Rows.Count, i)), Cells(Rows.Count, i).End(xlUp).Row, Rows.Count)
        For j = myLastRow To 1 Step -1
            If Cells(j, i).Value = "" Or Left(Cells(j, i).Value, 1) <> "c" Then
                Cells(j, i).Delete Shift:=xlUp
            End If
        Next j
    Next i
End Sub

Diese Variante löscht sowohl leere Zellen als auch Zellen, die nicht mit "c" beginnen.


Tipps für Profis

  • Nutze den Debug.Print-Befehl, um den Status der Schleifen und Variablen während der Ausführung des Makros zu überwachen.
  • Speichere deine Arbeitsmappe vor der Ausführung von Makros, um Datenverlust zu vermeiden.
  • Teste deinen VBA-Code zuerst in einer Kopie deiner Arbeitsmappe, insbesondere wenn du mit großen Datenmengen arbeitest.

FAQ: Häufige Fragen

1. Wie lösche ich nur leere Zellen in Excel? Du kannst den folgenden VBA-Code verwenden, um nur leere Zellen zu löschen:

Sub deleteEmptyCells()
    Dim rng As Range
    Dim cell As Range
    Set rng = Range("C3:AF32")
    For Each cell In rng
        If IsEmpty(cell.Value) Then
            cell.Delete Shift:=xlUp
        End If
    Next cell
End Sub

2. Was passiert, wenn ich versehentlich die falschen Zellen lösche? Wenn du versehentlich die falschen Zellen gelöscht hast, kannst du die Rückgängig-Funktion in Excel verwenden (Strg + Z), um die letzte Aktion rückgängig zu machen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige