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

"0" oder leer unterscheiden per VBA

Forumthread: "0" oder leer unterscheiden per VBA

"0" oder leer unterscheiden per VBA
10.10.2006 11:30:06
Petra
Hallo,
bin fast am verzweifeln ... wahrscheinlich ist es aber ganz simpel ;-)
Wie kann ich per VBA die eindeutige Unterscheidung treffen, ob eine Zelle leer ist oder eine eingetragene 0 enthält?
Hintergrund: ich habe eine umfangreiche Tabelle, in deren Zellen Ziffern von 0 bis 9 stehen oder die Zellen sind leer. Per VBA möchte ich die Anzahl der jeweiligen Ziffern pro Spalte ermitteln (also wieviele 1en, 0en, 5en etc.)
Und das Makro zählt in der Integer-Variablen auch die leeren Zellen als 0, das darf aber nicht, denn die 0 ist ebenfalls nur eine Codierung.
Wäre für eine Erhellung und evt. Lösung des Problems sehr dankbar!
Viele Grüße
Petra
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: "0" oder leer unterscheiden per VBA
10.10.2006 11:37:52
Reinhard
Hi Petra,
Spalt A wird überprüft, Ergebnisse in B1:B10.
in Modul1:
Option Explicit
Sub tt()
Dim n As Byte
For n = 48 To 57 '"0"=48, "1"=49, usw.
Cells(n - 47, 2) = Application.WorksheetFunction.CountIf(Columns("A:A"), Chr(n))
Next n
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: "0" oder leer unterscheiden per VBA
10.10.2006 12:10:01
Reinhard
Hi Petra,
Unterscheidung zwischen "0" und "leer" geht auch mit
If Len([A1]=0 Then
Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
AW: "0" oder leer unterscheiden per VBA
10.10.2006 12:52:16
Petra
Hallo Reinhard,
ja, der 2. Tipp war's!! Danke, genau diese Funktion brauche ich.
Auch vielen Dank für den 1. Code, sieht sehr viel einfacher aus, als meiner, aber vom reinen anschauen kann ich noch nicht sagen, ob er genau das leistet, was ich möchte ... werde ich aber noch tun.
Schönen Tag für dich und viele Grüße
Petra
Anzeige
AW: "0" oder leer unterscheiden per VBA
10.10.2006 11:40:10
Harald
Hallo Petra,
leer: activecell.value =""
Gruss Harald
AW: "0" oder leer unterscheiden per VBA
10.10.2006 12:55:01
Petra
Hallo Harald,
vielen Dank ... hab mich vielleicht nicht richtig ausgedrückt,sorry ... aber die Funktion, die ich brauche, ist "len"; mit "value" sind die Probleme ja aufgetreten ;-)
Schönen Tag und viele Grüße
Petra
AW: "0" oder leer unterscheiden per VBA
10.10.2006 11:40:49
EtoPHG
Hallo Petra,
If IsEmpty(ZELLE), aber Achtung, steht da z.B. die Formel
=WENN(A1="x";"y";"") wird "" NICHT als ISEMPTY erkannt.
Gruss Hansueli
Anzeige
AW: "0" oder leer unterscheiden per VBA
10.10.2006 12:59:11
Petra
Hallo Hansueli,
vielen Dank auch an dich, "isempty" hab ich nicht ausprobiert, weil - hab ich dann gemerkt - manchmal Leerzeichen in den Leerzellen ;-) drin sind. Ich hab's jetzt mit der len-Funktion gelöst, die ich nur benutze, wenn "value = 0" erkannt wird.
Schönen Tag und viele Grüße
Petra
Anzeige
;
Anzeige

Infobox / Tutorial

"0" oder leer in Excel per VBA unterscheiden


Schritt-für-Schritt-Anleitung

Um in Excel per VBA zwischen einer eingetragenen "0" und einer leeren Zelle zu unterscheiden, kannst Du folgendes Vorgehen nutzen:

  1. Öffne die VBA-Entwicklungsumgebung: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke auf Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Option Explicit
    Sub Unterscheiden()
       Dim n As Byte
       For n = 48 To 57 '"0"=48, "1"=49, usw.
           Cells(n - 47, 2) = Application.WorksheetFunction.CountIf(Columns("A:A"), Chr(n))
       Next n
    End Sub
  4. Führe das Makro aus: Gehe zu Run > Run Sub/UserForm oder drücke F5, um das Makro auszuführen.

Dieser Code zählt die Ziffern in Spalte A und gibt die Ergebnisse in Spalte B aus. Dabei wird die Unterscheidung zwischen "0" und leeren Zellen klar geregelt.


Häufige Fehler und Lösungen

  1. Fehler: Makro zählt leere Zellen als "0"

    • Lösung: Stelle sicher, dass Du die Len-Funktion verwendest, um die Länge des Zellinhalts zu überprüfen. Ein Beispiel:
      If Len(Cells(1, 1).Value) = 0 Then
       ' Zelle ist leer
      ElseIf Cells(1, 1).Value = 0 Then
       ' Zelle enthält eine 0
      End If
  2. Fehler: "IsEmpty" funktioniert nicht richtig

    • Lösung: Achte darauf, dass Zellen mit Formeln, die leer erscheinen, nicht als leer erkannt werden. Verwende Len oder Trim, um Leerzeichen zu entfernen.

Alternative Methoden

Eine alternative Methode zur Unterscheidung von "0" und leeren Zellen ist die Verwendung der IsEmpty-Funktion:

If IsEmpty(Cells(1, 1)) Then
    ' Zelle ist leer
Else
    ' Zelle enthält einen Wert
End If

Beachte jedoch, dass IsEmpty bei Zellen mit Formeln, die "" zurückgeben, nicht funktioniert. Hier kann die Len-Funktion eine bessere Wahl sein.


Praktische Beispiele

  1. Zählen der Ziffern in einer Tabelle:

    Sub CountDigits()
       Dim i As Integer
       For i = 0 To 9
           Cells(i + 1, 2).Value = Application.WorksheetFunction.CountIf(Range("A:A"), i)
       Next i
    End Sub
  2. Überprüfen auf leere Zellen:

    Sub CheckEmpty()
       Dim cell As Range
       For Each cell In Range("A1:A10")
           If Len(cell.Value) = 0 Then
               cell.Offset(0, 1).Value = "Leer"
           Else
               cell.Offset(0, 1).Value = "Inhalt: " & cell.Value
           End If
       Next cell
    End Sub

Tipps für Profis

  • Nutze Application.WorksheetFunction für komplexe Berechnungen direkt in VBA.
  • Halte Deinen Code sauber und gut kommentiert, um die Wartung zu erleichtern.
  • Experimentiere mit Debug.Print, um den Wert von Variablen während der Ausführung zu überprüfen.

FAQ: Häufige Fragen

1. Wie kann ich direkt auf leere Zellen prüfen? Verwende die Len-Funktion, um die Länge des Zellinhalts zu überprüfen. Eine Zelle mit einer Länge von 0 ist leer.

2. Was ist der Unterschied zwischen "0" und leeren Zellen in Excel? Eine "0" ist ein tatsächlicher Wert, während eine leere Zelle keinen Wert hat. Dies kann in Berechnungen und in VBA zu unterschiedlichen Ergebnissen führen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige