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

if not zelle = leer

Forumthread: if not zelle = leer

if not zelle = leer
09.07.2003 18:23:20
michael
Hallo Forum,
ich suche eine Abfrage, um nur leere Zellen zu identifizieren.
In den Zellen
A1 steht 1
A2 steht 0
A3 steht nichts
Obwohl der Wert für b=0 im Macro angegeben wird, wird die Abfrage wie bei einer leeren Zelle (c=leer) behandelt.
In den Zellen
B1 steht nicht leer
B2 steht leer
B3 steht leer
Wie muß die Abfrage richtig lauten?

Sub test()
a = Range("a1").Value
b = Range("a2").Value
c = Range("a3").Value
If Not a = leer Then
Range("b1") = "nicht leer"
Else: Range("b1") = "leer"
End If
If Not b = leer Then
Range("b2") = "nicht leer"
Else: Range("b2") = "leer"
End If
If Not c = leer Then
Range("b3") = "nicht leer"
Else: Range("b3") = "leer"
End If
End Sub

Danke für eure Hilfe
Michael
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
vielen Dank euch beiden!
09.07.2003 19:25:02
michael
klasse beides klappt! (auch wenn ich nichts löschen darf) so ist der befehl/e das was ich suchte.
Am wenigsten mußte ich bei ändern
If Not a = "" Then
sieht auf den ersten Blick umständich aus, da ich aber viele if Abfragen und if abfragen mit and /or kombiniern muß, die sich auf die werte a, b, c beziehen ist es so für mich am einfachsten.
Nochmal vielen Dank für eure prompte Hilfe
Michael

Anzeige
AW: if not zelle = leer
09.07.2003 18:37:01
PeterW
Hallo Michael,
frage direkt mit
If Isempty(Range("A2")) Then
ab.
Gruß
Peter

AW: if not zelle = leer
09.07.2003 18:31:43
ivan
hi Michael
wie wäre es mit finden und gleich löschen??

Sub LeerZeilenLoeschen()
Dim i As Long, laR As Long
Application.ScreenUpdating = False
laR = Cells(Rows.Count, 1).End(xlUp).Row
For i = laR To 1 Step -1
If Cells(i, 1).Value = "" Then
Cells(i, 1).EntireRow.Delete
End If
Next i
Application.ScreenUpdating = True
End Sub

gruss
ivan

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Excel VBA: Abfragen ob Zelle leer oder nicht leer ist


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und gehe zu dem Arbeitsblatt, in dem du die VBA-Abfragen durchführen möchtest.

  2. Öffne den VBA-Editor: Drücke ALT + F11.

  3. Füge ein neues Modul hinzu: Rechtsklicke im Projektfenster auf "VBAProject (dein Arbeitsblattname)" und wähle Einfügen > Modul.

  4. Gib den folgenden Code ein, um zu prüfen, ob eine Zelle leer ist oder nicht:

    Sub Test()
       Dim a As Variant
       a = Range("A1").Value
    
       If Not IsEmpty(a) Then
           Range("B1").Value = "nicht leer"
       Else
           Range("B1").Value = "leer"
       End If
    End Sub
  5. Führe das Macro aus: Klicke auf Run oder drücke F5, während das Cursor im Code steht.


Häufige Fehler und Lösungen

  • Fehler: "Typ nicht definiert"
    Lösung: Stelle sicher, dass du alle Variablen korrekt deklariert hast. Nutze Dim für die Deklaration.

  • Fehler: Zelle wird immer als leer angezeigt
    Lösung: Verwende If Not IsEmpty(Range("A1")) anstelle von If Not a = "", um sicherzustellen, dass auch Zellen mit einem Wert von 0 korrekt erkannt werden.


Alternative Methoden

Eine einfache Methode, um zu prüfen, ob eine Zelle leer ist, ist die Verwendung von WorksheetFunction.CountA. Hier ist ein Beispiel:

Sub ZellePruefen()
    If Application.WorksheetFunction.CountA(Range("A1")) = 0 Then
        Range("B1").Value = "leer"
    Else
        Range("B1").Value = "nicht leer"
    End If
End Sub

Diese Methode kann nützlich sein, wenn du mehrere Zellen gleichzeitig prüfen möchtest.


Praktische Beispiele

  1. Prüfen mehrerer Zellen: Wenn du mehrere Zellen prüfen und in einer anderen Spalte das Ergebnis anzeigen möchtest, kannst du den Code entsprechend anpassen:

    Sub MehrereZellenPruefen()
       Dim i As Long
       For i = 1 To 3 ' Zellen A1 bis A3 überprüfen
           If Not IsEmpty(Range("A" & i)) Then
               Range("B" & i).Value = "nicht leer"
           Else
               Range("B" & i).Value = "leer"
           End If
       Next i
    End Sub
  2. Leere Zellen löschen: Wenn du alle leeren Zellen löschen möchtest, kannst du folgenden Code verwenden:

    Sub LeerZeilenLoeschen()
       Dim i As Long
       For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
           If Cells(i, 1).Value = "" Then
               Cells(i, 1).EntireRow.Delete
           End If
       Next i
    End Sub

Tipps für Profis

  • Verwende IsEmpty: Diese Funktion ist sehr hilfreich, um zu prüfen, ob eine Zelle wirklich leer ist, insbesondere bei leeren Strings.
  • Kombiniere Bedingungen: Du kannst mehrere Bedingungen mit And oder Or verknüpfen, um komplexere Prüfungen durchzuführen.
  • Nutze Fehlerbehandlung: Setze On Error Resume Next, um mögliche Laufzeitfehler bei der Verarbeitung zu ignorieren.

FAQ: Häufige Fragen

1. Wie kann ich prüfen, ob eine Zelle nicht leer ist?
Du kannst If Not IsEmpty(Range("A1")) Then verwenden, um zu überprüfen, ob die Zelle A1 nicht leer ist.

2. Was ist der Unterschied zwischen IsEmpty und =""?
IsEmpty prüft, ob eine Zelle leer ist, während ="" auch leere Strings als "leer" betrachtet. Verwende IsEmpty, um genauere Ergebnisse zu erzielen.

3. Wie kann ich alle leeren Zellen in einem Bereich abfragen?
Du kannst eine Schleife verwenden, um jede Zelle im gewählten Bereich zu prüfen, wie im Abschnitt "Praktische Beispiele" beschrieben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige