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

Leerzellen, initialisierte und sonstige

Forumthread: Leerzellen, initialisierte und sonstige

Leerzellen, initialisierte und sonstige
Werner
Hallo!
Manchmal erlebt man Wunder mit Zellen, die leer aussehen, es aber nicht immer sind. Optisch
sind diese nur schwer zu unterscheiden, doch es ist durchaus von Bedeutung, ob eine Zelle
intialisiert ist oder nicht. Funktionen, die z.B. die letzte Zeile oder Spalte einer Tabelle ermitteln,
werden durch manche scheinbar "leeren", in Wirklichkeit aber gefüllten Zellen, beeinflusst. Auch
ein Leerstring ist offenbar als Füllzustand einer Zelle anzusehen.
Frage: Wie stellt man den Normalzustand der Leerzellen in einer Datei wieder her, wenn in dieser
Datei tüchtig Spalten und Zeilen gelöscht worden sind und deshalb in dieser Datei überall Zellen
herumschwirren, die leer wirken, es aber nicht sind?
Man kann natürlich den UsedRange mit einer Schleife leerraeumen (natürlich nur diejenigen Zellen,
die keinen Text enthalten), z.B.:

Sub Leermachen()
Dim c as Range
For Each c  in UsedRange
If IsEmpty(c) = False Then
Set c = Nothing
End If
Next c
End Sub


Kennt ihr vielleicht eine bessere Methode?
Mit Leerstrings belegte Zellen können eine Datei übrigens erheblich aufblähen, wenn viele davon
vorhanden sind.
Werner

Anzeige
AW: Leerzellen, initialisierte und sonstige
20.04.2008 14:46:15
Tino
Hallo,
was hältst du von diesem Code?

Sub NeueTabelle()
Dim tabN As String, berei As Range
Application.ScreenUpdating = False
Set berei = ActiveSheet.UsedRange
tabN = ActiveSheet.Name
Sheets.Add
berei.Copy ActiveSheet.Range(berei.Address)
With Application
.DisplayAlerts = False
Sheets(tabN).Delete
ActiveSheet.Name = tabN
.DisplayAlerts = True
.ScreenUpdating = True
End With
End Sub


Gruß
Tino

Anzeige
AW: Leerzellen, initialisierte und sonstige
20.04.2008 15:14:00
Werner
Hallo Tino,
vielen Dank für den Code! Ich muss ihn noch mal praktisch ausprobieren. Bei erstem Besehen scheint dieser
Code das Problem dadurch zu lösen, dass die Tabelle einfach kopiert wird.
Was passiert dabei mit den "falschen Leerzellen", z.B. Leerstrings? Die werden in der Kopie doch vielleicht
mit übernommen.
Bei einer umfangreichen Tabelle würde man es sich aber wohl überlegen, ob man viele Daten so einfach in ein
anderes Arbeitsblatt kopiert, denn Kopieren ist immer ein Risiko.
Das Problem ist, dass Leerzellen, echte und falsche, eben gleich aussehen, und wenn man eine
Tabelle mit schon eingefärbten Zellen hat, dann wäre es auch problematisch, die unechten Leerzellen
noch einmal farblich oder anders hervorzuheben.
Auch wenn man z.B. eine Prozedur schreibt, die in einem Datensatz nur gefüllte Zellen anspringt und die leeren überspringen soll, stören die
unechten Leerzellen, weil diese dann vom Programm als gefüllt betrachtet, also unnötigerweise mit angesprungen werden.
Leer oder nicht leer, das ist hier die Frage...
Offenbar gibt es in Excel mindestens drei Arten leer aussehender Zellen: 1. wirklich leere Zellen (also nicht initialisiert, 2.
Zellen mit Leerstring, 3. Zellen mit Leertastenanschlägen (Blanks).
Grüße Werner

Anzeige
AW: Leerzellen, initialisierte und sonstige
20.04.2008 15:25:48
Tino
Hallo,
ich habe es auf eine einfache Art getestet.
Habe mir in einer Tabelle in verschiedene Zellen Werte geschrieben, diese wieder gelöscht.
Mit Gehe zu Letzte Zelle getestet ob die gelöschte Zelle als letzte Zelle erkannt wird, habe dass Makro laufen lassen und wieder Gehe zu letzte Zelle und die letzte war auf einmal die wo auch Werte drin standen und nicht die leere.
Auf große Tabellen habe ich es nicht getestet.
Ein Restrisiko besteht immer, du kannst es ja an einer Kopie deiner Datei Testen, da ist es nicht so schlimm wen es in die Hose geht.
Gruß
Tino

Anzeige
Ergänzung
20.04.2008 16:48:00
Tino
Hallo,
wollte noch hinzufügen.
Ich kopiere nicht die komplette Tabelle sondern nur den Bereich mit Inhalt.
Set berei = ActiveSheet.UsedRange
Formeln bleiben erhalten da diese auch bei Leer erscheinen mit einbezogen werden.
Beispiel: =WENN(0=0;"";"") ergibt eine optisch leere Zelle.
Da ich den kopierten Bereich in dieselbe Adresse wieder einfüge, werden die Formeln auch nicht verändert.
Auch farblich veränderte Zellen ohne Inhalt werden mit eingeschlossen.
Zellen mit Bedingte Formatierungen ohne Inhalt werden nicht mit eingeschlossen.
Zumindest für die meisten Fälle funktioniert es.
Gruß
Tino

Anzeige
Optische Unterschiede echter Leerzellen
20.04.2008 20:13:00
Matthias
Hallo
Vielleicht hilft das, zum Erkennen der echten Leerzellen
Mach eine Kopie Deiner Datei
Markiere Deinen Zellbereich und entferne die Hintergrundfarbe (sofern gesetzt)
Jetzt hast Du eine Tabelle ohne Hintergrundfarbe. Nun wie im Bild weiter.
Userbild
Userbild

Anzeige
AW: Optische Unterschiede echter Leerzellen
20.04.2008 20:56:00
Heinz
Hi,
der Schritt mit strg + umsch + ende kann entfallen, da nicht nötig.
mfg Heinz

:o) _ korrekt ! oT
20.04.2008 22:53:00
Matthias

Dank und Schlussbemerkung
Werner
Hallo Heinz, Matthias, Tino:
noch ein etwas verspäteter Dank für eure nützlichen Antworten! Immerhin lassen sich mit solchen Methoden die echten von
den falschen Zellen trennen bzw. unterscheiden, das ist schon sehr viel wert.
Zu ergänzen wäre noch, dass "falsche Leerzellen" sowohl im UsedRange als auch außerhalb davon vor-
kommen können. Manchmal, nach Streichung vieler Spalten und/oder Zeilen aus einer Tabelle, ist der
UsedRange für Excel weit größer, als man glauben mag.
Kopieren in eine andere Tabelle ist wohl die beste Lösung, erkenne ich jetzt. Sonst müsste man z.B.
Millionen von Leerzellen ausserhalb des UsedRange testen und deinitialisieren, eine sicherlich zeitraubende
Aufgabe.
Ich bereite noch eine Frage zur "letzten Zelle" vor, die ich separat stelle, weil sie in eine etwas andere
Richtung geht
Grüße Werner
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige