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

Forumthread: Prüfen, ob Zelle leer, dann Null eintragen

Prüfen, ob Zelle leer, dann Null eintragen
03.03.2006 15:06:06
Andrew
Hallo zusammen,
Mit unten stehendem Makro würde ich gerne prüfen, ob Zellen in Spalte A leer sind. Dann soll eine Null eingetragen werden.
Leider funktioniert es nicht. Meine VBA-Kenntnisse sind sehr mager.
Für eure Hilfe wäre ich sehr dankbar.

Sub t()
Dim iZeile As Var
For iZeile = 1 To Range("A65536").End(xlUp).Row
If Cells(iZeile, 1).IsEmpty Then
Cells(iZeile, 1) = "0"
End If
Next iZeile
End Sub

Gruß
Andrew
Anzeige

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüfen, ob Zelle leer, dann Null eintragen
03.03.2006 15:08:04
Anne

Sub t()
Dim iZeile As Var
For iZeile = 1 To Range("A65536").End(xlUp).Row
If len(Cells(iZeile, 1)= 0 Then
Cells(iZeile, 1) = 0
End If
Next iZeile
End Sub

mfg Anne
AW: Prüfen, ob Zelle leer, dann Null eintragen
03.03.2006 15:15:34
Andrew
Hallo Anne,
danke für deine Antwort und Hilfe.
Ich habe leider immer noch einen Fehler. Ich bekomme immer die Fehlermeldung "Benutzerdefinierter Typ nicht definiert"

Sub t()
Dim iZeile As Var
For iZeile = 1 To Range("A65536").End(xlUp).Row
If Cells(Cells(iZeile, 1)= 0 Then
Cells(iZeile, 1) = 0
End If
Next iZeile
End Sub

Mache ich etwas falsch oder ich muss noch etwas ändern?
Gruß
Andrew
Anzeige
AW: Prüfen, ob Zelle leer, dann Null eintragen
03.03.2006 15:17:25
Anne
Dim iZeile As Long
mfg Anne
AW: Prüfen, ob Zelle leer, dann Null eintragen
03.03.2006 15:24:04
Andrew
Hallo Anne,
sorry, wegen dem winzigen Makro so ein Aufwand, aber jetzt erhalte ich einen Syntaxfehler

Sub t()
Dim iZeile As Long
For iZeile = 1 To Range("A65536").End(xlUp).Row
If Cells(Cells(iZeile, 1)= 0 Then
Cells(iZeile, 1) = 0
End If
Next iZeile
End Sub

Kannst du vielleicht noch mal gucken, woran es liegt.
Gruß
Andrew
Anzeige
AW: Prüfen, ob Zelle leer, dann Null eintragen
03.03.2006 15:36:41
Anne

Sub t()
Dim iZeile As Long
For iZeile = 1 To Range("A65536").End(xlUp).Row
If len(Cells(iZeile, 1)= 0 Then
Cells(iZeile, 1) = 0
End If
Next iZeile
End Sub

Tippe den code nicht ein, den kannst hier kopieren.
mfg Anne
AW: Prüfen, ob Zelle leer, dann Null eintragen
03.03.2006 15:41:59
Andrew
Hallo Anne,
danke für deine Unterstützung. Ich habe den VBA-Code kopiert. Aber er funktioniert leider immer noch nicht. In der If-Zeile muss es glaube ich "Cells" heißen und nicht "len". Trotzdem sagt er mir weiterhin Syntaxfehler!
Woran kann das denn nur liegen?
Gruß
Andrew
Anzeige
AW: Prüfen, ob Zelle leer, dann Null eintragen
03.03.2006 16:23:29
Anne
Hi,
eine fehlende Klammer:

Sub t()
Dim iZeile As Long
For iZeile = 1 To Range("A65536").End(xlUp).Row
If len(Cells(iZeile, 1)) = 0 Then
Cells(iZeile, 1) = 0
End If
Next iZeile
End Sub

mfg Anne
AW: Prüfen, ob Zelle leer, dann Null eintragen
03.03.2006 15:09:39
Jörg
Hi,
suchen nach(nichts eingeben), ersetzen duch 0, ganze Zelle vergleichen.
mfg Jörg
Anzeige
AW: Prüfen, ob Zelle leer, dann Null eintragen
03.03.2006 15:36:20
Andrew
Hallo Jörg,
danke für deinen Tipp
Gruß
Andrew
AW: Prüfen, ob Zelle leer, dann Null eintragen
03.03.2006 15:38:13
Andrew
Hallo zusammen,
leider ist meine Frage noch nicht ganz beantwortet.
Schaut doch bitte 2 Antworten von mir höher, hinter Annes letzte Antwort.
Danke und Gruß
Andrew
Was ist an VBA-Code falsch?
03.03.2006 16:05:09
Andrew
Was ist hieran falsch?
Kann jemand helfen?

Sub t()
Dim iZeile As Long
For iZeile = 1 To Range("A65536").End(xlUp).Row
If Cells(Cells(iZeile, 1)= 0 Then
Cells(iZeile, 1) = 0
End If
Next iZeile
End Sub

Gruß
Andrew
Anzeige
AW: Was ist an VBA-Code falsch?
03.03.2006 16:16:57
Andi
Hi
warum beharrst Du denn so konsequent auf Deiner Cells(Cells(...)-Syntax?
Der Code von Anne war schon der richtige, es hat nur eine schließende Klammer gefehlt:
If Len(Cells(iZeile, 1)) = 0 Then
Dein Ansatz mit IsEmpty war übrigens auch nicht so ganz verkehrt, nur hätte das so aussehen müssen:

Sub t()
Dim iZeile As Long
For iZeile = 1 To Range("A65536").End(xlUp).Row
If IsEmpty(Cells(iZeile, 1)) Then
Cells(iZeile, 1) = 0
End If
Next iZeile
End Sub

Schönen Gruß,
Andi
Anzeige
Vielen Dank für die Hilfe! Klappt jetzt!
03.03.2006 16:25:24
Andrew
Hallo Andi,
vielen Dank für deine Hilfe. Eigentlich wollte ich nicht auf meinem Zeug beharren! Ich hatte gedacht, dass dieses "len" ein Druckfehler war. Ich kenne mich halt zu wenig aus.
Aber jetzt bin ich auch froh zu wissen, woran es bei meiner Idee gelegen hat.
An alle anderen, die geholfen haben, vielen Dank
Gruß
Andrew
Anzeige
Gern geschehen... (mt)
03.03.2006 16:32:07
Andi
Hi, danke für die Rückmeldung.
kurz zur Erklärung:
len() ermittelt die Länge eines Strings;
if len() = 0
ist also (bei Zellen) im Prinzip das Gleiche wie
if isempty()
Eine dritte Möglichkeit wäre noch
if cells(iZeile,1) = ""
Schönen Gruß,
Andi
Danke für die Tipps und Erklärungen!
03.03.2006 16:45:52
Andrew
Hallo Andi,
super klasse, danke für die Tipps und Erklärungen!
Die werde ich auf jeden Fall gebrauchen können.
Gruß
Andrew
Anzeige
nochmal gern geschehen... (ot) :-)
03.03.2006 16:52:45
Andi
.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zellen in Excel prüfen und bei Leerheit Null eintragen


Schritt-für-Schritt-Anleitung

Um in Excel VBA zu prüfen, ob eine Zelle leer ist und bei Leerheit eine Null einzutragen, kannst du das folgende Makro verwenden:

Sub t()
    Dim iZeile As Long
    For iZeile = 1 To Range("A65536").End(xlUp).Row
        If IsEmpty(Cells(iZeile, 1)) Then
            Cells(iZeile, 1) = 0
        End If
    Next iZeile
End Sub
  1. Öffne Excel und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu starten.
  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeineDatei)", dann "Einfügen" > "Modul".
  3. Kopiere den obigen Code in das Modul.
  4. Schließe den VBA-Editor und kehre zu Excel zurück.
  5. Führe das Makro aus: Drücke ALT + F8, wähle t aus und klicke auf "Ausführen".

Häufige Fehler und Lösungen

  • Syntaxfehler: Wenn du eine Fehlermeldung erhältst, überprüfe den Code auf fehlende Klammern oder falsche Variablen. Ein häufiger Fehler ist beispielsweise die Verwendung von Var statt Long für die Zeilenvariable.

  • Benutzerdefinierter Typ nicht definiert: Stelle sicher, dass du die richtige Datentyp-Deklaration verwendest. Dim iZeile As Long ist korrekt.

  • Zelle nicht erkannt als leer: Stelle sicher, dass du IsEmpty() verwendest, um die Leere der Zelle zu prüfen. Alternativ gilt: If Cells(iZeile, 1) = "" Then funktioniert ebenfalls.


Alternative Methoden

  1. Verwendung der Len-Funktion:

    If Len(Cells(iZeile, 1)) = 0 Then
       Cells(iZeile, 1) = 0
    End If
  2. Direktes Vergleichen:

    If Cells(iZeile, 1) = "" Then
       Cells(iZeile, 1) = 0
    End If
  3. Verwendung von Find and Replace: Du kannst auch die Funktion "Suchen und Ersetzen" in Excel verwenden, um leere Zellen mit einer Null zu ersetzen.


Praktische Beispiele

Beispiel 1: Wenn du alle leeren Zellen in Spalte B auf Null setzen möchtest, ändere die Zeile Cells(iZeile, 1) in Cells(iZeile, 2).

Beispiel 2: Um leere Zellen in einem bestimmten Bereich zu prüfen:

Sub t()
    Dim iZeile As Long
    For iZeile = 1 To 10 ' Überprüfen der Zeilen 1 bis 10
        If IsEmpty(Cells(iZeile, 1)) Then
            Cells(iZeile, 1) = 0
        End If
    Next iZeile
End Sub

Tipps für Profis

  • Fehlerbehandlung: Füge eine Fehlerbehandlung ein, um unerwartete Fehler abzufangen, z.B.:

    On Error Resume Next
  • Optimierung: Deaktiviere das Bildschirm-Update, um die Ausführungsgeschwindigkeit zu erhöhen:

    Application.ScreenUpdating = False
    ' Dein Code hier
    Application.ScreenUpdating = True
  • Verwendung von WorksheetFunction: Du kannst auch Excel-Funktionen in VBA verwenden, um mehr Flexibilität zu erhalten.


FAQ: Häufige Fragen

1. Wie kann ich mehrere Spalten gleichzeitig prüfen? Du kannst die Schleife anpassen, um mehrere Spalten zu überprüfen, indem du die Spaltennummer in der Cells-Funktion änderst.

2. Was passiert, wenn die Zelle bereits einen Wert hat? Das Makro ändert nur leere Zellen. Wenn die Zelle bereits einen Wert hat, bleibt dieser unverändert.

3. Kann ich das Makro für eine bestimmte Zeilenanzahl anpassen? Ja, ändere einfach die Schleifenbedingung, um die gewünschten Zeilen zu überprüfen.

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