Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Target.Address

Forumthread: Target.Address

Target.Address
18.12.2008 17:04:48
Sonja
Hallo,
ich bomme einfach nicht weiter.
ich möchte den pfad in der target.adress ändern.
vorher:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$J$2" Then
nachher:
If Target.Address =Sheets("Hilfstabelle") "$B$4" Then
aber das funktioniert einfach nicht.
könnt ihr mir wieder helfen?
vielen dank
sonja
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Sheets("Hilfstabelle").Range("$B$4") oT
18.12.2008 17:08:35
Matthias
AW: Target.Address
18.12.2008 17:09:00
Uwe
Hi Sonja,
das Target ist immer in dem Blatt, in dem der Code steht. Anders macht das auch keinen Sinn beim Worksheet_Change Ereignis. Es kann gar nicht in einem anderen Blatt sein.
Dafür müsstest Du halt das Worksheet_Change Ereignis in dem anderen Blatt nutzen.
Oder habe ich das falsch verstanden?
Gruß
Uwe
(:o)
Anzeige
AW: Target.Address
18.12.2008 17:27:00
Sonja
Hallo
ja das stimmt der target befindet sich in dem blatt in dem der code steht.
in meiner tabelle im blatt bestand wird in spalte i über diesen code eine formel eingefü
in spalte j2 steht das aktuelle jahr, dieses möchte ich aber aus diesem blatt herausnehmen
und in die hilfstabelle b4 schreiben.
hier noch mal der ganze code
If Target.Address = "$J$2" Then
Sheets("Bestand").Protect Password:="", UserInterfaceOnly:=True
Sheets("Bestand").EnableSelection = xlUnlockedCells 'Keine gesperrtenZellen 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 & "'!R2C12:R6499C12)*('" & Target.Cells & "'!R2C5:R6499C5=""BK"")*('" & Target.Cells & "'!R2C6:R6499C6=Bestand!RC3)*('" & Target.Cells & "'!R2C7:R6499C7=Bestand!RC4)*('" & Target.Cells & "'!R2C11:R6499C11=""neu""))"
End With
End If
'Ende Formel in Spalte i einfügen
Anzeige
AW: Target.Address
18.12.2008 17:46:00
Uwe
Hi Sonja,
dann am Ende des Codes so:

End With
Sheets("hilfstabelle").Range("B4").Value = Target.Value
End If


Klappt es?
Gruß
Uwe
(:o)

AW: Target.Address
18.12.2008 18:16:00
Sonja
Hallo Uwe,
leider klappt es nicht.
was muss ich den zwischen if und then am anfang des codes schreiben?
sonja
Anzeige
AW: Target.Address
18.12.2008 18:29:42
Uwe
Hi Sonja,
am Anfang brauchst Du nichts zu ändern. Nur diese eine Zeile einfügen. Also so:

If Target.Address = "$J$2" Then
Sheets("Bestand").Protect Password:="", UserInterfaceOnly:=True
Sheets("Bestand").EnableSelection = xlUnlockedCells 'Keine gesperrtenZellen 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 & "'!R2C12:R6499C12)*('" & Target.Cells & "'!R2C5: _
R6499C5=""BK"")*('" & Target.Cells & "'!R2C6:R6499C6=Bestand!RC3)*('" & Target.Cells & "'!R2C7: _
R6499C7=Bestand!RC4)*('" & Target.Cells & "'!R2C11:R6499C11=""neu""))"
End With
Sheets("hilfstabelle").Range("B4").Value = Target.Value
End If


Was passiert denn genau, wenn Du das so laufen lässt? Tritt ein Fehler auf (Welcher?) oder passiert gar nichts?
Gruß
Uwe
(:o)

Anzeige
AW: Target.Address
18.12.2008 18:51:58
Sonja
hi uwe
wenn ich den code laufen lasse passiert nichts also es bleibt alles unverändert.
aber eigentlich möchte ich ja das in der zelle "bestand" J2 nichts mehr steht,
sondern, der inhalt dieser zelle befindet sich jetzt in der hilfstabelle b4
sonja
AW: Target.Address
18.12.2008 17:09:52
Gerd
Hi,
Target ist immer im aktiven Blatt der markierte Zellbereich.
Beschreib besser, was du erreichen willst.
mfg Gerd
Anzeige
;
Anzeige

Infobox / Tutorial

Target.Address in VBA optimal nutzen


Schritt-für-Schritt-Anleitung

Um die Target.Address in einem VBA-Skript zu verwenden, befolge diese Schritte:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Suche das Arbeitsblatt, in dem du den Code anwenden möchtest.

  3. 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
  4. Schließe den VBA-Editor und teste den Code, indem du den Wert in Zelle J2 änderst.


Häufige Fehler und Lösungen

  • Fehler: „Nichts passiert“

    • Wenn der Code ausgeführt wird und sich nichts ändert, stelle sicher, dass du in Zelle J2 einen Wert eingibst. Der Code ist so konzipiert, dass er nur reagiert, wenn der Wert in dieser Zelle geändert wird.
  • Fehler: „Target.Address nicht korrekt“

    • Achte darauf, dass du den richtigen Zellbezug verwendest. Im VBA-Code muss das Dollarzeichen $ korrekt gesetzt sein.

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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige