HERBERS Excel-Forum - das Archiv
Frage zu Worksheet_Change
Peter

Guten Tag
Bei nachstehendem Worksheet_Chance Ereignis erhalte ich eine Fehlermeldung "Typen unverträglich"
(auf Zeile If Target = Range("rID") Then)
wenn ich zwei oder mehrere kopierte Zellen in der Tabelle, in dem der Code hinterlegt ist, einfügen will (und das ausserhalb des Ranges "rID" (bezieht sich aktuell auf die Zelle C3).
In C3 ist ein Wert (und nicht eine Formel) eingetragen; wenn ich jetzt in C104 und C105 etwas einfüge, sollte dieser Ereignisprotokoll nichts machen.
Wo mache ich einen Überlegungsfehler?
Gruss, Peter
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("rID") Then
Me.Cells.AutoFilter field:=1
Me.Cells.AutoFilter field:=1, Criteria1:="="
Else
End If
Call  .....
Call  ....
End Sub

AW: Frage zu Worksheet_Change
JogyB

Hi.
Exakte Übereinstimmung der Bereiche:
If Target.Address = Range("rID").Address Then ...
Bereiche müssen sich überschneiden:
If Not Intersect(Target, Range("rID")) Is Nothing Then ...
Gruss, Jogy
AW: Frage zu Worksheet_Change
IngGi

Hallo Peter,
mit

If Target = Range("rID") Then
prüfst du nicht, ob Target und Range("rID") dieselben Zellen sind, sondern ob der Inhalt der beiden Zellen gleich ist, das ist dir doch klar? Diese Prüfung geht schief, sobald entweder Target oder Range("rID") nicht nur aus einer, sondern aus mehreren Zellen besteht. In diesem Fall musst du die Zellen einzeln in einer Schleife prüfen.
Gruß Ingolf
AW: Frage zu Worksheet_Change
Peter

Hallo Ingolf
Irgendwie habe ich die Funktion mit "Target" noch nicht begriffen.
Folgendes ist meine Zielvorstellung:
Wenn in Range("rID") eine Eingabe erfolgt, sollen die beiden Autofiltercodes
Me.Cells.AutoFilter field:=1
Me.Cells.AutoFilter field:=1, Criteria1:="="
durchlaufen werden.
Zurzeit ist Range("rID") die Zelle C3. Der Code sollte jedoch auch laufen, falls der benannte Bereich später einer anderen Zelle zugeordnet ist.
Wenn ich in der Tabelle irgend eine andere Änderung vornehme, solle nichts passieren.
Was muss ich ändern?
Gruss, Peter
AW: Frage zu Worksheet_Change
fcs

Hallo Peter,
Target bezieht sich in Tabellenblättern immer auf eine Zelle bzw. einen Zellbereich
Deshalb muss eine Überprüfung von Target meistens eine Prüfung der Eigenschaften wie Adresse, Zeile, Spalte oder Überschneidung mit einem Bereich (Intersect) beinhalten. Die Prüfung des Target-Wertes erfolgt dann meist in einem 2. Schritt.
Deshalb muss du die If-Bedingung anders gestalten, um später den Namen rID einer beliebigen Zelle zuweisen zu können bzw. die Zelle auf dem Blatt zu verschieben.
Gruß
Franz
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("rID").Address Then
MsgBox "Zelle mit Name ""rID"" wurde geändert."
End If
End Sub

AW: Frage zu Worksheet_Change
Peter

Hallo Franz
Vielen Dank für die Erläuterung!
So klappts.
Gruss, Peter