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

Forumthread: leere Zellen löschen VBA

leere Zellen löschen VBA
23.09.2021 14:29:28
maylmz
Hey wieder ich,..
in einer Zeile werden per Formel Datum berechnet.. wenn Wahr dann Datum, wenn Falsch dann leer ""
Nun hätte ich gerne per VBA wenn Zelleninhalt "" dann soll Zelleninhalt einschließlich Formel gelöscht werden.. (Wichtig Zelleninhalt muss von rechts nach links gelöscht werden!)
Betroffen ist Spalte AK4:AY4..
Folgendes konnte ich zusammenbasteln, funktioniert auch, dauert aber eine halbe Ewigkeit ^^ :
<pre>Sub Zelle_loeschen()
Dim i As Long
Application.ScreenUpdating = False
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(4, 51) = "" Then
Cells(4, 51).Value = ""
End If
If Cells(4, 50) = "" Then
Cells(4, 50).Value = ""
End If
If Cells(4, 49) = "" Then
Cells(4, 49).Value = ""
End If
If Cells(4, 48) = "" Then
Cells(4, 48).Value = ""
usw..
Next i
Application.ScreenUpdating = True
End Sub</pre>
Ihr habt hierfür sicherlich viel viel bessere Vorschläge :D
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: leere Zellen löschen VBA
23.09.2021 14:37:47
Klaus
Hi,
erst sammeln, dann alles auf einmal löschen statt nacheinander!

Sub Makro1()
Dim myRng As Range
For i = 37 To 51
If Cells(4, i).Value = "" Then
If myRng Is Nothing Then
Set myRng = Cells(4, i)
Else
Set myRng = Union(myRng, Cells(4, i))
End If
End If
Next i
myRng.ClearContents
End Sub
LG,
Klaus M.
Anzeige
AW: leere Zellen löschen VBA
23.09.2021 14:50:59
Daniel
Hi
warum machst du die Schleife über die Zeilen, wenn doch nur Zeile 4 betroffen ist.
Damit bearbeitest du ja wiederholt die gleichen Zellen, wobei einmal ja reichen würde.
warum muss von links nach rechts gelöscht werden ?
ein Datum ist eine Zahl, ein "" ist ein Text.
du könntest alle Zellen mit "" als Ergebnis mit folgender Zeile auf einmal in echte Leerzellen verwandeln:

Range("AK4:AY4").SpecialCells(xlcelltypeformulas, 2).ClearContents
oder für ganze Spalten mit allen Zeilen:

Range("AK:AY").SpecialCells(xlcelltypeformulas, 2).ClearContents
wenn wirklch von rechts nach links gelöscht werden muss, dann mach die Schleife über die Spalten.

Dim i as long
for i = 51 to 37 Step -1
if Cells(4, 1).Value = "" then Cells(4, i).ClearContents
Next
wenns dann doch nicht nur eine Zeile ist, dann mit zweiter schleife:

dim Z as long, S as long
for Z = 1 To Cells(Rows.Count, 1).End(xlUp).Row
for S = 51 to 37 step -1
If Cells(Z, S) = "" Then Cells(Z, S).ClearContents
Next
Next
Wenn es tatsächlich notwendig ist, die Zellen nacheinander in dieser Reihenfolge zu leeren, dann bedeuted dass, dass nach jedem Löschen Werte neu berechnet werden müssen, weil sich dann neue konstellationen ergeben.
Wenn das tatsächlich so ist, dann lässt sich dann auch leider nicht mehr viel berschleunigen.
Gruß Daniel
Anzeige
AW: leere Zellen löschen VBA
23.09.2021 15:14:02
maylmz
Hey Daniel,
ich hatte wohl einen Fehler in einer Formel, deshalb habe ich gedacht ich muss zwingend von rechts beginnend löschen, ist aber nicht der Fall..
mit diesem VBA (Range("AK4:AY4").SpecialCells(xlcelltypeformulas, 2).ClearContents) klappt alles wunderbar. Allerdings ist mir aufgefallen, dass auch die dazugehörige untere Zeile 5 mit gelöscht werden muss. Das heißt wenn bsp. Zeile AO4:AY4 gelöscht wird (weil "") dann auch AO5:AY5 löschen.
Gruß, maylmz
Anzeige
AW: leere Zellen löschen VBA
23.09.2021 15:33:19
maylmz
Hat sich geklärt, brauche ich nicht mehr.
Vielen Dank
;

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

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