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

Forumthread: VBA - Löschen Spalteninhalt ab einer gew. Zeile

VBA - Löschen Spalteninhalt ab einer gew. Zeile
25.03.2019 10:08:55
Babs
Hallo,
ich habe einen VBA Code zusammengestellt bzw. gesucht (Kopie aus VBA Forum) der in mehreren Tabellen nach drücken eines Buttons den Inhalt von Spalte 2 und Spalte 3 löscht. Das Funktioniert auch sehr gut - leider löscht er die ganze Spalte ab Zeile 1 und ich würde gerne erst ab Zeile 3 Löschen - leider komm ich selber nicht drauf was ich in meinem derzeitigen Code ändern muss damit das auch richtig funktioniert.
Kann mir bitte jemand helfen?
u.a. der Code den ich verwende:
Private Sub CommandButton2_Click()
Dim nr, zz
For nr = 1 To 24
For zz = 3 To 1000
With Sheets("Tabelle" & Trim(Str(nr)))
.Columns(2).ClearContents
.Columns(3).ClearContents
End With
End Sub

Bin dankbar für jeden Tipp der mich näher zur Lösung bring :-)
Danke Babs
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Löschen Spalteninhalt ab einer gew. Zeile
25.03.2019 10:22:41
Matthias
Hallo
dann darfst Du nicht .Columns(2).ClearContents schreiben, sondern
Range("B3:B?").ClearContents
wobei hier das Fragezeichen für Deine letzte zu löschende Zeile steht.
Gruß Matthias
AW: VBA - Löschen Spalteninhalt ab einer gew. Zeile
25.03.2019 10:37:07
Werner
Hallo Babs,
bei dem Code wird die letzte belebte Zelle in Spalte B und C jeweils im Code ermittelt, ist also egal wieviele Daten dort vorhanden sind.
Private Sub CommandButton2_Click()
Dim nr As Long
For nr = 1 To 24
With Worksheets("Tabelle" & CStr(nr))
If .Cells(.Rows.Count, 2).End(xlUp).Row > 2 Then
.Range(.Cells(3, 2), .Cells(.Cells(.Rows.Count, 2) _
.End(xlUp).Row, 2)).ClearContents
End If
If .Cells(.Rows.Count, 3).End(xlUp).Row > 2 Then
.Range(.Cells(3, 3), .Cells(.Cells(.Rows.Count, 3) _
.End(xlUp).Row, 3)).ClearContents
End If
End With
Next nr
End Sub
Gruß Werner
Anzeige
AW:VBA-Löschen Spalteninhalt ab einer gew. Zeile
25.03.2019 10:48:26
Babs
Hallo Werner,
viele DANK! das funktioniert super und macht genau das was ich wollte!
Danke
Babs
Gerne u. Danke für die Rückmeldung. o.w.T.
25.03.2019 10:58:01
Werner
und natürlich mit dem Punkt vor Range !
25.03.2019 10:40:16
Matthias
Hallo
natürlich mit dem Punkt vor Range !
also so gemeint ...
nur als Bsp.
    With Sheets("Tabelle" & Trim(Str(nr)))
.Range("B3:B100").ClearContents
.Range("C3:C100").ClearContents
End With
Das Ende des Bereiches(hier mal Zeile 100) musst Du natürlich anpassen.
Außerdem ist Dein gezeigter Code nicht korrekt.
Du beginnst 2x mit For also brauchst Du auch 2x ein Next
Gruß Matthias
Anzeige
AW: und natürlich mit dem Punkt vor Range !
25.03.2019 10:53:45
Babs
Halo Matthias,
vielen Dank für deinen Hilfe hat auch funktioniert - jedoch weiß ich nicht genau wie lang die Liste immer wird....daher hab ich jetzt den Code von Werner genommen der Löscht egal in welcher Zeile geschrieben wird.
...und danke für die Info was bei meinem Code außer das er nicht gemacht hat was ich wolle, noch nicht ganz richtig war! Darum ist es denk ich auch immer gefühlte 10 min. gelaufen bevor er fertig war mit dem löschen...
DANKE DANKE für Deine bzw. Eure Hilfe!
lg
Babs
Anzeige
AW: VBA - Löschen Spalteninhalt ab einer gew. Zeile
25.03.2019 14:14:50
Daniel
Hi
sofern die Zeile 1 auf dem jeweiligen Blatt auch eine Zelle mit Wert enthält:
For nr = 1 to 24
Sheets("Tabelle" & nr).Usedrange.Columns(2).Resize(, 2).Offset(2, 0).ClearContents
Next
Gruß Daniel
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA: Spalteninhalt ab einer bestimmten Zeile löschen


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei und gehe zum VBA-Editor (Alt + F11).

  2. Erstelle ein neues Modul durch Rechtsklick auf "VBAProject (deinWorkbookName)" und wähle "Einfügen" > "Modul".

  3. Füge den folgenden Code ein, um den Inhalt von Spalte 2 und Spalte 3 ab Zeile 3 zu löschen:

    Private Sub CommandButton2_Click()
       Dim nr As Long
       For nr = 1 To 24
           With Worksheets("Tabelle" & CStr(nr))
               If .Cells(.Rows.Count, 2).End(xlUp).Row > 2 Then
                   .Range(.Cells(3, 2), .Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, 2)).ClearContents
               End If
               If .Cells(.Rows.Count, 3).End(xlUp).Row > 2 Then
                   .Range(.Cells(3, 3), .Cells(.Cells(.Rows.Count, 3).End(xlUp).Row, 3)).ClearContents
               End If
           End With
       Next nr
    End Sub
  4. Schließe den VBA-Editor und kehre zu deinem Arbeitsblatt zurück.

  5. Füge einen Button hinzu, um das Makro auszuführen. Weise ihm das Makro CommandButton2_Click zu.

Jetzt kannst du den Button klicken, und der Inhalt der angegebenen Spalten wird ab der dritten Zeile gelöscht.


Häufige Fehler und Lösungen

  • Problem: Der Code löscht die gesamte Spalte.

    • Lösung: Stelle sicher, dass du .Range(.Cells(3, 2), .Cells(.Cells(.Rows.Count, 2).End(xlUp).Row, 2)).ClearContents verwendest, um nur ab Zeile 3 zu löschen.
  • Problem: Fehlermeldung beim Ausführen des Codes.

    • Lösung: Überprüfe, ob der Tabellenname korrekt ist und ob es in den Tabellen Daten gibt.

Alternative Methoden

Wenn du keine VBA-Lösungen verwenden möchtest, kannst du auch mit Excel-Funktionen arbeiten, um den Inhalt ab einer bestimmten Zeile zu löschen:

  1. Nutze die Filterfunktion und filtere die Zeilen, die du löschen möchtest.
  2. Markiere die Zellen ab Zeile 3 in den Spalten 2 und 3 und drücke die Entf-Taste.

Diese Methode ist jedoch nur für kleinere Datenmengen praktikabel.


Praktische Beispiele

Wenn du beispielsweise eine Tabelle mit 100 Zeilen hast und nur die Inhalte ab Zeile 3 in den Spalten B und C löschen möchtest, kannst du den oben genannten VBA-Code verwenden. Der Code entfernt alle Inhalte ab Zeile 3, ohne die Formatierungen zu beeinflussen.


Tipps für Profis

  • Verwende Variablen, um die letzten Zeilen dynamisch zu ermitteln, sodass der Code flexibel bleibt und für verschiedene Tabellen funktioniert.
  • Experimentiere mit der Resize-Methode, um mehrere Spalten gleichzeitig zu löschen.

    Sheets("Tabelle" & nr).UsedRange.Columns(2).Resize(, 2).Offset(2, 0).ClearContents

Dies ist besonders nützlich, wenn du den Inhalt mehrerer Spalten auf einmal leeren möchtest.


FAQ: Häufige Fragen

1. Wie lösche ich den Inhalt einer ganzen Spalte ab Zeile 3? Um dies zu tun, kannst du den VBA-Code verwenden, der die Zellen ab Zeile 3 in den gewünschten Spalten leer macht.

2. Kann ich auch andere Spalten mit demselben Code bearbeiten? Ja, du kannst die Spaltenindizes in .Columns(2) und .Columns(3) anpassen, um andere Spalten zu bearbeiten.

3. Was passiert, wenn ich den Code ohne Button ausführe? Der Code wird nicht ausgeführt, da er an das Klicken eines Buttons gebunden ist. Du kannst den Code auch direkt im VBA-Editor ausführen, wenn du den Cursor innerhalb der Subroutine platzierst und F5 drückst.

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