Zwei Private Sub Worksheet_Change zusammenführen
Schritt-für-Schritt-Anleitung
Um zwei Private Sub Worksheet_Change Makros in Excel zusammenzuführen, kannst du folgenden Code verwenden. Dieser Code kombiniert die Funktionalitäten von Datum setzen und Sortieren:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 4 Then
Cells(Target.Row, 20).Value = Format(Now, "dd.mm.yyyy")
End If
If Not Intersect(Target, Range("T11:T100")) Is Nothing Then
Range("B11:AC150").Sort Key1:=Range("T11"), Order1:=xlAscending, Header:=xlNo
End If
Application.EnableEvents = True
End Sub
- Öffne den Visual Basic for Applications (VBA) Editor: Drücke
ALT + F11.
- Wähle das entsprechende Arbeitsblatt aus: Klicke auf das Arbeitsblatt, in dem du das Makro verwenden möchtest.
- Füge den obigen Code ein: Kopiere den Code in das Codefenster des Arbeitsblatts.
- Schließe den VBA-Editor: Klicke auf das X in der oberen rechten Ecke.
Häufige Fehler und Lösungen
-
Fehler: Makro wird nicht ausgeführt
Lösung: Stelle sicher, dass die Application.EnableEvents auf True gesetzt ist, damit das Makro nach einer Änderung wieder aktiv wird.
-
Fehler: Ergebnis wird nicht angezeigt
Lösung: Überprüfe, ob die Spalte 4 tatsächlich verändert wurde und dass die Zellen in dem angegebenen Bereich korrekt sind.
Alternative Methoden
Wenn du eine andere Herangehensweise ausprobieren möchtest, kannst du auch Worksheet_SelectionChange verwenden. Hier ein Beispiel, wie du das umsetzen kannst:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("T11:T100")) Is Nothing Then
Target.Calculate
End If
End Sub
Diese Methode führt Aktionen aus, wenn die Auswahl geändert wird, anstatt bei Änderungen in Zellen.
Praktische Beispiele
- Beispiel für Datum setzen: Wenn du einen Wert in die vierte Spalte eingibst, wird das aktuelle Datum automatisch in die 20. Spalte gesetzt.
- Beispiel für Sortierung: Wenn du Werte in den Bereich
T11:T100 änderst, wird der Bereich B11:AC150 basierend auf der Spalte T sortiert.
Tipps für Profis
- Verwende
Application.EnableEvents: Dies verhindert, dass das Makro rekursiv aufgerufen wird, wenn du innerhalb des Makros Änderungen vornimmst.
- Dokumentiere deinen Code: Füge Kommentare hinzu, um die Funktionalität deines Codes zu erklären. Das hilft dir und anderen zukünftigen Benutzern.
FAQ: Häufige Fragen
1. Was ist der Unterschied zwischen Worksheet_Change und Worksheet_SelectionChange?
Worksheet_Change wird ausgelöst, wenn sich der Inhalt einer Zelle ändert, während Worksheet_SelectionChange ausgeführt wird, wenn die Auswahl einer Zelle geändert wird.
2. Kann ich mehrere Bedingungen innerhalb eines Worksheet_Change Makros haben?
Ja, du kannst mehrere If-Anweisungen verwenden, um verschiedene Bedingungen zu prüfen und unterschiedliche Aktionen auszuführen.