Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Inhalt eines Teil einer Tabelle entfernen - VBA

Forumthread: Inhalt eines Teil einer Tabelle entfernen - VBA

Inhalt eines Teil einer Tabelle entfernen - VBA
01.02.2019 09:44:42
Fritz
Hallo VBA-Experten,
ich würde gerne über ein Makro aus dem Tabellenblatt "Statistik den Inhalt er Zellen des Zellbereichs A bis I entfernen (ClearContents) und zwar aller Zeilen, in denen in der Spalte B der gleiche Text steht wie in der Zelle BA1 des Tabellenblatts Statistik.
Beispiel:
Der Inhalt der Zelle BA1 befindet sich zusätzlich in B5, B9 und B14:
Dann sollte der Zellinhalt folgender Zellinhalte "geleert" werden:
A5:I5, A9:I9 und A14:I14
Für eure Unterstützung im Voraus besten Dank.
mfg
Fritz
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Inhalt eines Teil einer Tabelle entfernen - VBA
01.02.2019 09:57:13
Fritz
Hallo Forumsbesucher,
muss eben völlig überraschend weg und kann mich erst heute abend wieder melden.
Danke und Gruß
AW: Inhalt eines Teil einer Tabelle entfernen - VBA
01.02.2019 10:11:37
Daniel
Hi
mal davon ausgehend, dass in Spalte B keine Formeln stehen und auch keine Wahrheitswerte:
With Sheets("Statistik")
.Columns(2).Replace .Range("BA1").Value, True, xlwhole
if Worksheetfunction.CountIF(.columns(2), True) then
Intersect(.columns(2).SpecialCells(xlcelltypeconstants, 4).entirerow, _
.Range("A:I")).ClearContents
end if
End with
Gruß Daniel
Anzeige
AW: Inhalt eines Teil einer Tabelle entfernen - VBA
01.02.2019 10:19:28
Bernd
Servus Fritz,
meinst du so in der Art?

Sub test()
Dim i As Integer
Dim intLZ As Integer
intLZ = ThisWorkbook.Sheets("Statistik").Cells(Rows.Count, 2).End(xlUp).Row
With Sheets("Statistik")
For i = 2 To intLZ
If .Cells(i, 2).Value = .Cells(1, "BA").Value Then
.Range(.Cells(i, 1), .Cells(i, 9)).ClearContents
End If
Next i
End With
End Sub
Grüße, Bernd
Anzeige
Zeilen-Inhalte löschen mit Bedingung
01.02.2019 10:17:27
Beverly
Hi Fritz,
meinst du so etwas:
Sub Leeren()
Dim lngZeile As Long
With Worksheets("Statistik")
For lngZeile = 1 To .Columns(1).Find(What:="*", _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
If .Cells(lngZeile, 2) = .Range("BA1") Then _
.Range(.Cells(lngZeile, 1), .Cells(lngZeile, 9)).ClearContents
Next lngZeile
End With
End Sub


Anzeige
und noch eine..
01.02.2019 10:25:06
UweD
Sub Weg_damit()
    Dim TB, LR As Long, RNG As Range, Finde As Range
    Dim SP As Integer, Z1 As Integer
    
    Set TB = Sheets("Statistik")
    Set RNG = TB.Columns("A:I")
    Set Finde = Range("BA1")
    
    SP = 2 'Spalte B 
    Z1 = 2 'Überschrift vorhanden 
    
    With TB
        LR = .Cells(.Rows.Count, SP).End(xlUp).Row 'letzte Zeile der Spalte 

        'Filtern nach BA 
        If .AutoFilterMode Then .AutoFilterMode = False ' Autofilter ausschalten 
        .Columns(SP).AutoFilter
        .Columns(SP).AutoFilter Field:=1, Criteria1:=Finde
        
        'Schnittmenge aus Spaltenbereich / sichtbaren Zeilen / genutze Zeilen leeren 
        Intersect(RNG, Rows.SpecialCells(12), .Rows(Z1).Resize(LR - Z1 + 1)).ClearContents
        
        .AutoFilterMode = False
    End With
    
End Sub
LG UweD
Anzeige
AW: Inhalt eines Teil einer Tabelle entfernen - VBA
01.02.2019 19:16:02
Fritz
Hallo liebe Helfer,
euch allen ganz herzlichen Dank für Eure Unterstützung.
Habe alle Makros getestet:
Daniels Makro funktioniert genau so, wie ich das haben wollte.
Nach Ausführung der Codes von Karin und Bernd stelle ich im Tabellenblatt "Statistik" keine Veränderung fest, eine Fehlermeldung erfolgt jedoch jeweils auch nicht.
Uwes Code filtert bei mir alle Zeilen weg, in denen in Spalte B etwas eingetragen ist, gelöscht bzw. entfernt wird aber nichts. Es erfolgt eine Fehlermeldung, nach der im Code die Zeile die mit Intersect beginnt mit gelber Farbe markiert wird.
Euch allen beste Grüße
Fritz
Anzeige
AW: Inhalt eines Teil einer Tabelle entfernen - VBA
01.02.2019 20:17:51
UweD
Zu meinem Makro:
Dann ist BA1 leer.
Das kann mal natürlich vorher noch abfangen.
Daniels Lösung ist aber genial kompakt.
LG UweD
AW: Inhalt eines Teil einer Tabelle entfernen - VBA
01.02.2019 20:25:37
Fritz
Hallo Uwe, Karin und Bernd
es tut mir richtig leid, ich habe in der Eile Mist gebaut. Beim Test war in allen drei Fällen BA1 leer, das hätte ich aber merken müssen, bitte aufrichtig um Nachsicht.
Auch eure Codes funktionieren einwandfrei.
Nochmals ganz herzlichen Dank an alle und beste Grüße
Fritz
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Inhalt eines Teils einer Tabelle entfernen mit VBA


Schritt-für-Schritt-Anleitung

Um den Inhalt eines bestimmten Bereichs in einer Excel-Tabelle mit VBA zu entfernen, kannst du das folgende Makro verwenden. Dieses Beispiel geht davon aus, dass du den Inhalt der Zellen in den Spalten A bis I entfernen möchtest, wenn in Spalte B ein bestimmter Text steht.

  1. Öffne die Excel-Datei 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 InhaltEntfernen()
    Dim i As Integer
    Dim intLZ As Integer
    intLZ = ThisWorkbook.Sheets("Statistik").Cells(Rows.Count, 2).End(xlUp).Row
    With Sheets("Statistik")
        For i = 2 To intLZ
            If .Cells(i, 2).Value = .Cells(1, "BA").Value Then
                .Range(.Cells(i, 1), .Cells(i, 9)).ClearContents
            End If
        Next i
    End With
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das Makro aus, indem du ALT + F8 drückst, das Makro auswählst und auf Ausführen klickst.

Häufige Fehler und Lösungen

  • Fehler: Makro hat keine Wirkung.

    • Stelle sicher, dass die Zelle BA1 nicht leer ist, da der Code nur dann funktioniert, wenn ein Wert in dieser Zelle steht.
  • Fehler: Laufzeitfehler 1004.

    • Dieser Fehler tritt auf, wenn die Referenz auf den Zellbereich nicht korrekt ist. Überprüfe, ob der Tabellenblattname und der Zellbereich korrekt angegeben sind.

Alternative Methoden

Wenn du den Inhalt einer Excel-Tabelle entfernen möchtest, ohne die Zellen selbst zu löschen, kannst du auch den Filter verwenden:

  1. Aktiviere den Autofilter in deiner Tabelle.
  2. Filtere die Spalte B nach dem gewünschten Kriterium.
  3. Markiere die sichtbaren Zeilen und drücke Entf, um den Inhalt der Zellen zu entfernen.

Praktische Beispiele

  • Beispiel 1: Wenn in der Zelle BA1 der Text "Beispiel" steht und in Spalte B die Zellen B5, B9 und B14 auch "Beispiel" enthalten, wird der Inhalt der Zellen A5:I5, A9:I9 und A14:I14 entfernt.

  • Beispiel 2: Um alle Zellen in einer Tabelle zu leeren, deren Werte in Spalte B einem bestimmten Kriterium entsprechen (z. B. "Abgeschlossen"), kannst du das oben genannte VBA-Skript entsprechend anpassen.


Tipps für Profis

  • Verwende Application.ScreenUpdating = False, um die Bildschirmaktualisierung während des Makros zu deaktivieren. Dies kann die Ausführungsgeschwindigkeit erhöhen.
  • Füge eine Fehlerbehandlung hinzu, um unerwartete Fehler zu vermeiden:
On Error GoTo Fehlerbehandlung
' dein Code hier
Exit Sub

Fehlerbehandlung:
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

FAQ: Häufige Fragen

1. Wie kann ich den Inhalt einer Tabelle entfernen, ohne die Zeilen zu löschen? Du kannst die Methode ClearContents verwenden, um den Inhalt zu leeren, während die Zeilen und Spalten intakt bleiben.

2. Ist es möglich, mehrere Werte gleichzeitig zu prüfen? Ja, du kannst eine Schleife einfügen, die mehrere Werte prüft, z. B. mit einer Select Case-Anweisung.

3. Funktioniert das Makro in allen Excel-Versionen? Das vorgestellte VBA-Makro sollte in den meisten modernen Excel-Versionen (z. B. Excel 2010 bis 2021) funktionieren. Achte darauf, dass deine Makros aktiviert sind.

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