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

VBA: Range funktioniert nicht mit ClearContents

Forumthread: VBA: Range funktioniert nicht mit ClearContents

VBA: Range funktioniert nicht mit ClearContents
25.06.2017 17:18:29
Gerd
Hallo,
ich habe ein seltsames Problem, wahrscheinlich ein Anfängerfehler:
Ich habe ein Makro, das von einem anderen Makro aus aufgerufen wird u.a. folgende Zeilen enthält:
Sub DeleteUser(varRow As Integer, varUserID As Integer)
Dim cell As Range
With Worksheets(2)
.Range(.Range("C" & varRow), .Range("E" & varRow)).ClearContents
End With
End Sub
Verwende ich es so, passiert gar nichts (auch keine Fehlermeldung).
Schreibe ich zum Testen statt ClearContents z.B. Interior.ColorIndex = 44, dann werden genau die richtigen Zellen erkannt und auch markiert.
Verlangt .ClearContents hier eine andere Range-Definition oder muss man hier aus irgendeinem Grund einen anderen Befehl verwenden ?
Vielen Dank im Voraus für jeden Tipp.
VG,
Gerd
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Range funktioniert nicht mit ClearContents
25.06.2017 17:41:03
Hajo_Zi
Hallo Gerd,
in meiner Datei wird gelöscht.
nur wenige schauen auf Deinen Rechner und sehen die Datei.
Ich hätte nicht Integer benutzt sondern Long da es 1.048.576 Zeilen gibt.

AW: VBA: Range funktioniert nicht mit ClearContents
25.06.2017 17:56:02
Gerd
Hallo Hajo,
vielen Dank.
Ich kann hier leider keine Beispiel-Datei hochladen. Integer ist aber nicht das Problem, da in meinem Fall keine großen Zahlen zu erwarten sind.
VG,
Gerd
Anzeige
AW: VBA: Range funktioniert nicht mit ClearContents
25.06.2017 17:57:53
Hajo_Zi
Hallo Gerd,
Gut dann warten wir also bis jemand auf Deinen Rechner schaut.
Auf 2 Rechner ist der Code ja ok.
Gruß Hajo
AW: VBA: Range funktioniert nicht mit ClearContents
25.06.2017 17:50:11
Luschi
Hallo Gerd,
also bei mir funktioniert Dein Konstrukt und der Inhalt wird geleert:
.Range(.Range("C" & varRow), .Range("E" & varRow)).ClearContents
in Excel 2013/16
Ich würde es aber so schreiben: .Range("C" & varRow & ":E" & varRow).ClearContents
nicht nur weil es kürzer ist sondern weil in Deiner Schreibweise Vba 3 Range-Objekte bilden muß bei meiner nur 1 Objekt.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: VBA: Range funktioniert nicht mit ClearContents
25.06.2017 18:01:59
Gerd
Hallo Luschi,
vielen Dank für Deine Nachricht !
Der Tipp mit der Schreibweise behebt zwar nicht mein Problem ist aber super und macht das Schreiben wesentlich einfacher, weil ich so etwas öfter in meinem Code verwende.

Noch ein Nachtrag:

Seltsamerweise funktionieren beide Schreibweisen (meine und Deine) auch mit .Value = "", was genau macht, was ich benötige.
Mein Problem ist damit behoben, vielleicht weiss aber trotzdem jemand, warum ClearContents hier nicht auch die Zellinhalte löscht - oder verstehe ich die Funktion falsch ?
VG,
Gerd
Anzeige
AW: VBA: Range funktioniert nicht mit ClearContents
25.06.2017 19:56:05
MB12
Hallo Gerd,
Kann es sein, dass du irgendwo im Range verbundene Zellen hast? Erscheint mir zwar unwahrscheinlich, aber da du die Datei nicht hochlädst, ist eine vernünftige Antwort kaum möglich.
Trotzdem einen schönen SoAbend
Margarete
;
Anzeige

Infobox / Tutorial

Probleme mit ClearContents in Excel VBA lösen


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Finde das Makro: Suche das Makro, in dem du die Methode .ClearContents verwenden möchtest.
  3. Überprüfe die Range-Definition: Stelle sicher, dass die Range korrekt definiert ist. Zum Beispiel:
    Sub DeleteUser(varRow As Long, varUserID As Integer)
       With Worksheets(2)
           .Range("C" & varRow & ":E" & varRow).ClearContents
       End With
    End Sub

    In diesem Beispiel wird die Range in einem Schritt definiert, was die Performance verbessert.

  4. Testen: Führe das Makro aus und überprüfe, ob die Zellen wie gewünscht geleert werden.

Häufige Fehler und Lösungen

  • Problem: .ClearContents funktioniert nicht.

    • Lösung: Überprüfe, ob in dem definierten Bereich verbundene Zellen vorhanden sind. Verbundene Zellen können dazu führen, dass der Befehl nicht wie erwartet funktioniert.
  • Problem: Verwendung von Integer statt Long.

    • Lösung: Bei großen Datenmengen (über 32.767 Zeilen) kann Integer zu Problemen führen. Verwende Long, um eine größere Anzahl von Zeilen zu unterstützen.
  • Problem: Unterschiedliche Schreibweisen.

    • Lösung: Nutze die einfachere Schreibweise .Range("C" & varRow & ":E" & varRow).ClearContents, um die Lesbarkeit zu erhöhen.

Alternative Methoden

Falls .ClearContents nicht funktioniert, kannst du folgende Alternativen verwenden:

  • Werte in Zellen leeren:

    .Range("C" & varRow & ":E" & varRow).Value = ""
  • Verwendung von Selection.ClearContents:

    Selection.ClearContents
  • Verwendung von .Clear:

    .Range("C" & varRow & ":E" & varRow).Clear

    Dies entfernt nicht nur die Inhalte, sondern auch die Formatierungen.


Praktische Beispiele

Hier sind einige Beispiele, wie du .ClearContents in verschiedenen Situationen verwenden kannst:

  1. Leeren einer spezifischen Zeile:

    Sub ClearSpecificRow()
       Dim varRow As Long
       varRow = 10 ' Beispielzeile
       Worksheets(1).Range("A" & varRow & ":C" & varRow).ClearContents
    End Sub
  2. Leeren einer Auswahl:

    Sub ClearSelection()
       Selection.ClearContents
    End Sub
  3. Leeren mehrerer Zellen:

    Sub ClearMultipleCells()
       Worksheets(2).Range("B2:D5").ClearContents
    End Sub

Tipps für Profis

  • Verwende Long anstelle von Integer für Zeilen- und Spaltennummern, um Probleme bei großen Datenmengen zu vermeiden.
  • Nutze .Clear für einen vollständigen Reset der Zellen (Inhalt und Formatierung).
  • Überprüfe, ob die Zellen eventuell geschützt sind, was das Leeren der Inhalte verhindern könnte.
  • Teste deinen Code in einer neuen Arbeitsmappe, um sicherzustellen, dass keine anderen Makros oder Formate stören.

FAQ: Häufige Fragen

1. Warum funktioniert ClearContents nicht? Es kann sein, dass du verbundene Zellen in dem Bereich hast, oder der Bereich ist nicht korrekt definiert.

2. Wie kann ich mehrere Zellen gleichzeitig leeren? Verwende eine Range-Definition wie .Range("A1:B10").ClearContents, um mehrere Zellen gleichzeitig zu leeren.

3. 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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige