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.