Makro auslösen bei Zelländerung in Excel
Schritt-für-Schritt-Anleitung
Um ein Makro automatisch auszulösen, wenn eine bestimmte Zelle in Excel geändert wird, kannst du die folgende Schritt-für-Schritt-Anleitung nutzen:
-
Öffne den Visual Basic for Applications (VBA) Editor:
- Drücke
ALT + F11
, um den VBA-Editor zu öffnen.
-
Wähle das entsprechende Arbeitsblatt:
- Im Projektfenster auf der linken Seite, doppelklicke auf das Arbeitsblatt, in dem du das Makro auslösen möchtest.
-
Füge den Code ein:
- Kopiere den folgenden Code und füge ihn in das Codefenster des Arbeitsblatts ein:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$B$8" Then
' DEIN MAKRO
End If
End Sub
- Ersetze
DEIN MAKRO
mit dem Code, den du ausführen möchtest.
-
Speichere die Datei als Makro-aktivierte Arbeitsmappe:
- Gehe zu
Datei
-> Speichern unter
und wähle den Typ Excel-Arbeitsmappe mit Makros (*.xlsm)
.
-
Teste dein Makro:
- Ändere den Wert in Zelle B8 und überprüfe, ob das Makro wie gewünscht ausgeführt wird.
Häufige Fehler und Lösungen
Alternative Methoden
Falls du eine andere Methode bevorzugst, kannst du auch die Worksheet_SelectionChange
-Ereignisprozedur verwenden, jedoch ist dies weniger effizient als Worksheet_Change
. Hier ein Beispiel:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Target.Address = "$B$8" Then
' DEIN MAKRO
End If
End Sub
Das obige Beispiel wird ausgeführt, wenn die Zelle B8 ausgewählt wird, nicht nur bei einer Änderung.
Praktische Beispiele
Hier ist ein einfaches Beispiel für ein Makro, das das aktuelle Datum in die Zelle B8 schreibt, wenn der Wert geändert wird:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$B$8" Then
Target.Value = Now()
End If
End Sub
Wenn du nun B8 änderst, wird das aktuelle Datum automatisch in die Zelle geschrieben.
Tipps für Profis
-
Verwende Application.EnableEvents
: Um zu verhindern, dass das Makro in einer Schleife läuft, kannst du Events vorübergehend deaktivieren:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.EnableEvents = False
' DEIN MAKRO
Application.EnableEvents = True
End Sub
-
Debugging: Nutze Debug.Print
im Code, um Werte während der Ausführung zu protokollieren und Fehler schneller zu finden.
FAQ: Häufige Fragen
1. Kann ich mehrere Zellen überwachen?
Ja, du kannst die Bedingungen im If
-Block erweitern, um mehrere Zellen zu überwachen, z.B. If Target.Address = "$B$8" Or Target.Address = "$C$8" Then
.
2. Funktioniert das auch in Excel 365?
Ja, diese Methode funktioniert in Excel 365 sowie in anderen Versionen, die VBA unterstützen.