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

UsedRange.Clear und UsedRange.Rows.Count

Forumthread: UsedRange.Clear und UsedRange.Rows.Count

UsedRange.Clear und UsedRange.Rows.Count
25.10.2005 08:07:47
Hilde
Nochmals einen schönen Guten Morgen,
so langsam dürfte sich die Anzahl der Forumsbesucher erhöhen und die Rückmeldung eventuell auch....
also: habe noch ein Problem bzw. eine Frage:
Bevor ich innerhalb einer Prozedur Datensätze aus einer anderen Datei in meine kopiere, lösche ich die alten Daten aus dem WS raus, indem ich erst einmal die Anzahl der vorhandenen DS zähle (.UsedRange.Rows.Count) und dann deren Inhalt und Formatierung lösche - nur Überschriftenzeile bleibt erhalten (.Range("A2:T" & intZeilen).Clear)
Wenn ich nun keine DS mehr in dieses Worksheet kopiere, dann müßte doch mein UsedRange rein theoretisch leer sein. Ist er aber nicht, denn: wenn ich nochmals die DS zähle, gibt mir der Zeilenzähler über die MsgBox einen Wert größer 1 zurück (= 1 wäre ok, da ich ja die Überschriftenzeile nicht lösche).
Was bedeutet das? Dass Zellen, deren Inhalt und Formatierung mittels Clear gelöscht wurden dennoch als UsedRange identifiziert werden?
LG und Salut
Hilde
With WS
intZeilen = .UsedRange.Rows.Count
MsgBox "Zeilenanzahl in WS: " & intZeilen
.Range("A2:T" & intZeilen).Clear
End With
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: UsedRange.Clear und UsedRange.Rows.Count
25.10.2005 08:21:19
achim
Hallo Hilde
Versuche mal
With WS
intZeilen = .UsedRange.Rows.Count
MsgBox "Zeilenanzahl in WS: " & intZeilen
.Range("A2:T" & intZeilen).Cells.ClearContents
End With
Gruss
achim h.
AW: UsedRange.Clear und UsedRange.Rows.Count
25.10.2005 09:18:25
Hilde
funktioniert leider nicht!
zaaehler zaählt auch nach dem Löschen die leeren Datensätze.
Hilde
Anzeige
AW: UsedRange.Clear und UsedRange.Rows.Count
25.10.2005 08:21:25
WernerB.
Hallo Hilde,
UsedRange funktioniert nach dem Löschen von Zeilen/Spalten nur dann richtig, wenn die Datei nach dem Löschen gespeichert wird.
Zur Ermittlung der letzten Zelle mit Inhalt empfehle ich deshalb diese Vorgehensweise:
Dim laR As Long
On Error Resume Next
laR = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
On Error GoTo 0
Die On-Error-Anweisung ist nur für den Fall erforderlich, wenn das Blatt ganz leer sein sollte; wenn immer eine Überschrift da ist, kannst du sie auch weglassen.
Viel Erfolg wünscht
WernerB.
P.S.: Dieses Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter !
Anzeige
AW: UsedRange.Clear und UsedRange.Rows.Count
25.10.2005 09:19:56
Hilde
hallo werner,
werde es später ausprobieren, da ich jetzt erst einmal ausser haus bin.
dennoch danke einstweilen.
salut
hilde
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Effektive Nutzung von UsedRange in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Verwendung von UsedRange: Um die Anzahl der Zeilen im aktiven Arbeitsblatt zu zählen, kannst du die folgende Zeile verwenden:

    Dim intZeilen As Long
    intZeilen = ActiveSheet.UsedRange.Rows.Count
    MsgBox "Zeilenanzahl in WS: " & intZeilen
  2. Inhalt und Formatierung löschen: Um die Daten und Formatierungen zu löschen, während du die Überschriftenzeile beibehältst, nutze diesen Code:

    ActiveSheet.Range("A2:T" & intZeilen).Clear
  3. Neues Zählen nach dem Löschen: Um die aktuelle Anzahl der Zeilen zu überprüfen, führe den Zählcode erneut aus:

    intZeilen = ActiveSheet.UsedRange.Rows.Count
    MsgBox "Aktualisierte Zeilenanzahl in WS: " & intZeilen
  4. Speichern der Datei: Beachte, dass der UsedRange nach dem Löschen von Zeilen oder Spalten nur korrekt funktioniert, wenn die Datei gespeichert wird. Dies bleibt oft unbemerkt.


Häufige Fehler und Lösungen

  • Problem: Nach dem Löschen von Inhalten bleibt der UsedRange unverändert.

    • Lösung: Stelle sicher, dass du die Datei nach dem Löschen speicherst. Alternativ kannst du den UsedRange durch die Suche nach der letzten Zelle mit Inhalt ermitteln:
      Dim laR As Long
      On Error Resume Next
      laR = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
      On Error GoTo 0
  • Problem: .Clear entfernt nicht die Zeilen aus dem UsedRange.

    • Lösung: Verwende .ClearContents anstelle von .Clear, um nur den Inhalt zu löschen und die Zeilen weiterhin zu zählen.

Alternative Methoden

  • Verwendung von .UsedRange.Rows.Count: Anstelle von ActiveSheet.UsedRange.Rows.Count kannst du auch auf spezifische Blätter zugreifen:

    Dim intZeilen As Long
    intZeilen = Sheets("DeinBlatt").UsedRange.Rows.Count
  • Direktes Löschen: Statt .Clear könntest du auch .Delete verwenden, um ganze Zeilen zu entfernen:

    Rows("2:" & intZeilen).Delete

Praktische Beispiele

  • Beispiel 1: Löschen von Daten in einem bestimmten Bereich und Zählen der verbleibenden Zeilen:

    With ActiveSheet
      Dim intZeilen As Long
      intZeilen = .UsedRange.Rows.Count
      .Range("A2:T" & intZeilen).ClearContents
      MsgBox "Nach dem Löschen verbleiben " & .UsedRange.Rows.Count & " Zeilen."
    End With
  • Beispiel 2: Ermittlung der letzten Zeile mit Inhalt:

    Dim lastRow As Long
    lastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
    MsgBox "Die letzte Zeile mit Inhalt ist: " & lastRow

Tipps für Profis

  • Verwende UsedRange effizient: Achte darauf, dass UsedRange nur die tatsächlich verwendeten Zellen zurückgibt. Das kann durch unnötige Leerzeilen beeinflusst werden.

  • Optimiere deine VBA-Prozeduren: Fasse häufig wiederkehrende Codes in Subroutinen zusammen, um die Lesbarkeit zu erhöhen und die Wartung zu vereinfachen.

  • Nutze Debugging: Verwende Debug.Print anstelle von MsgBox, um den Fluss deiner Prozeduren zu verfolgen, ohne ständig Eingabeaufforderungen zu sehen.


FAQ: Häufige Fragen

1. Warum kann ich nach dem Löschen von Daten in Excel immer noch eine Zeilenanzahl sehen? Die Zellen, die Inhalte enthalten haben, aber gelöscht wurden, zählen immer noch zum UsedRange. Stelle sicher, dass du die Datei speicherst, um den UsedRange zu aktualisieren.

2. Was ist der Unterschied zwischen .Clear und .ClearContents? .Clear entfernt sowohl den Inhalt als auch die Formatierung der Zellen, während .ClearContents nur den Inhalt löscht und die Formatierungen beibehält.

3. Wie finde ich die letzte Zeile mit Daten in einem Arbeitsblatt? Du kannst die Methode Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row verwenden, um die letzte Zeile mit Inhalt effizient zu finden.

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