Target.Address in VBA optimal nutzen
Schritt-für-Schritt-Anleitung
Um die Target.Address in einem VBA-Skript zu verwenden, befolge diese Schritte:
-
Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
-
Suche das Arbeitsblatt, in dem du den Code anwenden möchtest.
-
Füge den folgenden Code in das entsprechende Arbeitsblattmodul ein:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$J$2" Then
Sheets("Bestand").Protect Password:="", UserInterfaceOnly:=True
Sheets("Bestand").EnableSelection = xlUnlockedCells ' Keine gesperrten Zellen auswählbar
Dim lngZ As Long
With ThisWorkbook.Sheets("Bestand")
lngZ = Application.Max(9, .Cells(.Rows.Count, 2).End(xlUp).Row)
.Range("I2:I" & lngZ).FormulaR1C1 = "=RC[-1]-SUMPRODUCT(('" & Target.Cells.Address & "'!R2C12:R6499C12)*('" & Target.Cells.Address & "'!R2C5:R6499C5=""BK"")*('" & Target.Cells.Address & "'!R2C6:R6499C6=Bestand!RC3)*('" & Target.Cells.Address & "'!R2C7:R6499C7=Bestand!RC4)*('" & Target.Cells.Address & "'!R2C11:R6499C11=""neu""))"
End With
Sheets("Hilfstabelle").Range("B4").Value = Target.Value
End If
End Sub
-
Schließe den VBA-Editor und teste den Code, indem du den Wert in Zelle J2 änderst.
Häufige Fehler und Lösungen
Alternative Methoden
Wenn du mit Target.Address nicht den gewünschten Effekt erzielst, könntest du auch die Worksheet.Change-Ereignisprozedur in einem anderen Arbeitsblatt verwenden, indem du den Arbeitsblattnamen in den Code einfügst:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Sheets("Hilfstabelle").Range("$B$4").Address Then
' Dein Code hier
End If
End Sub
Praktische Beispiele
Hier ist ein einfaches Beispiel, das zeigt, wie Target.Address verwendet wird, um den Inhalt einer Zelle in eine andere zu kopieren:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Sheets("Zielblatt").Range("A1").Value = Target.Value
End If
End Sub
In diesem Beispiel, wenn du den Wert in Zelle A1 änderst, wird der neue Wert automatisch in die Zelle A1 des Arbeitsblatts „Zielblatt“ kopiert.
Tipps für Profis
- Nutze
Target.Cells.Address, um mehr Flexibilität zu erhalten, insbesondere wenn du mit mehreren Zellen arbeitest.
- Bei größeren Datenmengen kann die Nutzung von
Application.ScreenUpdating = False und Application.Calculation = xlCalculationManual zu einer schnelleren Ausführung des Codes führen.
- Dokumentiere deinen Code gut, um später die Logik hinter der Verwendung von
Target.Address besser nachvollziehen zu können.
FAQ: Häufige Fragen
1. Was ist Target.Address?
Target.Address gibt die Adresse der Zelle zurück, die im Worksheet_Change-Ereignis geändert wurde. Dies ist nützlich, um spezifische Zellen zu überwachen.
2. Wie kann ich auf mehrere Zellen reagieren?
Du kannst eine Schleife verwenden, um über Target.Cells zu iterieren und auf jede Zelle zu reagieren. Achte darauf, die Bedingungen entsprechend anzupassen.
3. Warum funktioniert mein Code nicht?
Prüfe, ob der Code im richtigen Arbeitsblattmodul steht und ob die Zellbezüge korrekt sind. Stelle auch sicher, dass das Arbeitsblatt nicht geschützt ist, wenn du Änderungen vornimmst.