Alle Zellen löschen die keinen Wert und keine Formel haben

10/02/2015 - 13:23 von Daniel | Report spam
Hallo liebe Leute,

ich habe folgendes Makro:

Sub löschen()
Dim zelle As Range
For Each zelle In Selection
If zelle.HasFormula = True Then
Else
zelle.ClearContents
End If
Next zelle

End Sub

Wie erweitere ich es so, dass nicht nur Zellen mit Formeln sondern auch
Zellen mit Werten nicht gelöscht werden. Hintergrund ist, dass ich eine
Quelldatei habe, aus der ich im weiteren Lauf über Index und Vergleich eine
andere Datei mit Werten fülle und festgestellt habe, dass beim Auslesen
optisch leerer Zellen aus der Quelldatei in der Zieldatei dann #Wert steht.
Nach vielem grübeln, habe ich herausgefunden, dass in der Quelldatei die
optisch leeren Zellen Leerzeichen beinhalten. Wenn ich diese einfach mit
"entfernen" lösche, habe ich in der Zieldatei aus das #Wert nicht mehr,
sondern einfach einen 0 - so wie ich es will. Mit dem Makro möchte ich genau
diese Zellen leer bekommen. Ich hoffe, ihr könnt mir helfen.

Viele Grüße
Daniel
 

Lesen sie die antworten

#1 Claus Busch
10/02/2015 - 13:38 | Warnen spam
Hallo Daniel,

Am Tue, 10 Feb 2015 13:23:13 +0100 schrieb Daniel:

Wie erweitere ich es so, dass nicht nur Zellen mit Formeln sondern auch
Zellen mit Werten nicht gelöscht werden. Hintergrund ist, dass ich eine
Quelldatei habe, aus der ich im weiteren Lauf über Index und Vergleich eine
andere Datei mit Werten fülle und festgestellt habe, dass beim Auslesen
optisch leerer Zellen aus der Quelldatei in der Zieldatei dann #Wert steht.
Nach vielem grübeln, habe ich herausgefunden, dass in der Quelldatei die
optisch leeren Zellen Leerzeichen beinhalten. Wenn ich diese einfach mit
"entfernen" lösche, habe ich in der Zieldatei aus das #Wert nicht mehr,
sondern einfach einen 0 - so wie ich es will. Mit dem Makro möchte ich genau
diese Zellen leer bekommen. Ich hoffe, ihr könnt mir helfen.



dann suche nur nach Zellen mit Konstanten und wenn diese dann ein
Leerzeichen beinhalten, lasse sie löschen:

Sub Loeschen()
Dim rngC As Range

With ActiveSheet
For Each rngC In .UsedRange.SpecialCells(xlCellTypeConstants, 2)
If rngC = Chr(32) Then rngC.Clear
Next
End With
End Sub


Mit freundlichen Grüßen
Claus
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional

Ähnliche fragen