Formel per VBA einfügen, wenn Wert in Zelle = "IST"
Schritt-für-Schritt-Anleitung
Um eine Formel per VBA in Excel einzufügen, wenn der Wert in einer bestimmten Zelle "IST" ist, befolge diese Schritte:
-
Öffne den VBA-Editor, indem Du ALT + F11 drückst.
-
Wähle das entsprechende Arbeitsblatt aus, in das Du den Code einfügen möchtest.
-
Füge den folgenden Code in das Codefenster ein:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Z As Range
Set Z = Range("E10:P10")
If Not Intersect(Target, Z) Is Nothing Then
If Cells(16, Target.Column) > 0 Then
Cells(16, Target.Column).FormulaR1C1 = _
"=IF(R[-6]C=""IST"",VLOOKUP(R16C4,Tabelle2!C3:C15,R[-13]C[1],0),"""")"
Cells(16, Target.Column).Select
Else
MsgBox "In Zeile 16 fehlt der manuell erfasste Wert"
End If
End If
End Sub
-
Schließe den VBA-Editor und gehe zurück zu Excel.
-
Ändere einen Wert in den Zellen E10 bis P10. Wenn der Wert "IST" ist, wird die Formel in Zeile 16 eingefügt.
Häufige Fehler und Lösungen
-
Fehler: Die Formel wird nicht eingefügt, wenn der Wert "IST" nicht erkannt wird.
- Lösung: Stelle sicher, dass der Wert in der Zelle exakt "IST" und nicht "ist" oder "Ist" geschrieben ist. Du kannst die Eingabe auch in Kleinbuchstaben normalisieren.
-
Fehler: „In Zeile 16 fehlt der manuell erfasste Wert“ wird angezeigt, obwohl ein Wert vorhanden ist.
- Lösung: Überprüfe, ob in Zeile 16 tatsächlich ein Wert steht. Der Code prüft nur, ob der Wert größer als 0 ist.
Alternative Methoden
Eine alternative Methode, um eine Formel einzufügen, besteht darin, die Worksheet_Change-Ereignisprozedur zu verwenden, um auf andere Bereiche zu reagieren. Du kannst den Code so anpassen, dass er in anderen Zellen oder Bereichen funktioniert.
Ein Beispiel:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F10:P10")) Is Nothing Then
If LCase(Target.Value) = "ist" Then
Target.Offset(6, 0).FormulaR1C1 = "=SVERWEIS($D$16;Tabelle2!$C:$G;H3;0)"
End If
End If
End Sub
Praktische Beispiele
Hier sind einige Beispiele, die Dir helfen können, die VBA-Formel in verschiedenen Szenarien zu implementieren:
-
Verwende die Formel, um Daten aus einer anderen Tabelle zu ziehen, wenn der Wert "IST" eingegeben wird:
Cells(16, Target.Column).FormulaR1C1 = "=VLOOKUP(R[0]C4, 'Tabelle2'!C3:C18, column(R[0]C[0]) - column(R[0]C4)+ 1 , False)"
-
Setze den Wert in eine andere Zelle, wenn ein bestimmtes Kriterium erfüllt ist:
If Target.Value = "IST" Then
Cells(Target.Row + 1, Target.Column).Value = "Neuer Wert"
End If
Tipps für Profis
- Nutze
Application.EnableEvents = False, um unendliche Schleifen zu vermeiden, wenn Du Zellen innerhalb des Worksheet_Change-Ereignisses änderst.
- Verwende
FormulaR1C1, um sicherzustellen, dass Deine Formeln dynamisch angepasst werden, egal wo sie eingefügt werden.
- Dokumentiere Deinen Code gut, damit Du auch in Zukunft verstehst, was Du programmiert hast.
FAQ: Häufige Fragen
1. Wie kann ich den Bereich für die Eingabe anpassen?
Du kannst den Bereich in Set Z = Range("E10:P10") ändern, um jeden gewünschten Bereich anzupassen.
2. Was passiert, wenn ich mehrere Zellen gleichzeitig ändere?
Der Code funktioniert möglicherweise nicht richtig, wenn mehrere Zellen gleichzeitig geändert werden. Achte darauf, dass nur eine Zelle geändert wird.
3. Funktioniert dieser Code in Excel 365?
Ja, der Code ist mit Excel 365 und auch mit früheren Versionen kompatibel, solange VBA unterstützt wird.