VBA If Formel: Wenn Leer, dann Nichts – Sonst Wert
Schritt-für-Schritt-Anleitung
Um in Excel mit VBA eine Formel zu verwenden, die nur dann einen Wert setzt, wenn die benachbarte Zelle nicht leer ist, kannst du die folgende Vorgehensweise nutzen:
-
Öffne den VBA-Editor: Drücke ALT + F11
, um den Editor zu öffnen.
-
Füge ein neues Modul hinzu: Klicke im Projektfenster mit der rechten Maustaste auf dein Arbeitsblatt und wähle Einfügen -> Modul
.
-
Füge den Code ein: Kopiere den folgenden VBA-Code in das Modul:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Name As Range
Set Target = Target.Cells(1)
If Target.Column = 1 Then
Set Name = Worksheets("Dropdown_Sonstiges").Range("Y:Y").Find(Range("B1").Value)
If Not Name Is Nothing Then
Target.Offset(0, 1) = Worksheets("Daten").Cells(Name.Row + 1, "G").Value
End If
End If
End Sub
-
Schließe den VBA-Editor: Speichere deine Änderungen und schließe den Editor.
-
Teste die Funktion: Gib in Spalte A einen Wert ein und überprüfe, ob die entsprechende Zelle in Spalte B das gewünschte Ergebnis anzeigt.
Häufige Fehler und Lösungen
-
Fehler: Die Zelle in Spalte B bleibt leer, obwohl in A ein Wert steht.
- Lösung: Stelle sicher, dass die Formel in B korrekt eingegeben wurde und dass die Referenzen auf andere Blätter (z.B. "Dropdown_Sonstiges") stimmen.
-
Fehler: VBA funktioniert nicht, wenn A zuerst leer war und dann gefüllt wird.
- Lösung: Überprüfe, ob die Ereignis-Prozedur (EP) richtig implementiert ist und dass die entsprechenden Bedingungen im Code korrekt formuliert sind.
Alternative Methoden
Falls du keine VBA-Lösungen nutzen möchtest, kannst du auch Formeln verwenden. Allerdings ist das Ersetzen von Formeln durch Werte nicht direkt möglich. Eine Möglichkeit wäre die Nutzung der WENN
-Funktion in Kombination mit WENNFEHLER
, um die Anzeige zu steuern, z.B.:
=WENN(A6>"";WENNFEHLER(INDEX(Daten!$G$4:$G$22;VERGLEICH(B$1;Dropdown_Sonstiges!$Y$3:$Y$21;0);"");"")
Diese Formel gibt nur dann einen Wert zurück, wenn A6 nicht leer ist.
Praktische Beispiele
-
Beispiel 1: Wenn in Zelle A10 ein Datum eingetragen wird, soll in B10 der Nachname des Nutzers erscheinen, der aus einem anderen Datenblatt abgerufen wird.
Wenn A10 <> "" Dann
B10 = Nachname aus Datenblatt
Ende Wenn
-
Beispiel 2: Bei einer Schichtübergabe in Excel soll das Schichtübergabeprotokoll automatisch aktualisiert werden, wenn in Spalte A ein Datum eingegeben wird.
Tipps für Profis
- Nutze
Application.EnableEvents = False
, um zu verhindern, dass die Ereignisprozedur sich selbst aufruft und somit eine Endlosschleife entsteht.
- Überlege dir, ob du die
VBA If Or
-Bedingungen verwenden solltest, um mehrere Bedingungen gleichzeitig abzufragen.
FAQ: Häufige Fragen
1. Wie kann ich sicherstellen, dass die Formel in einer Zelle bleibt, wenn sie leer ist?
Eine Möglichkeit ist, die Formel in einer if-Bedingung zu überprüfen und nur unter bestimmten Umständen zu ersetzen. Verwende If ... Then
in deiner VBA-Prozedur.
2. Was ist der Unterschied zwischen VBA If Or
und VBA If And
?
VBA If Or
prüft, ob mindestens eine der Bedingungen wahr ist, während VBA If And
sicherstellt, dass alle Bedingungen erfüllt sind, bevor die Aktion ausgeführt wird.