Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
980to984
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
980to984
980to984
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Frage zum Change ereignis

Frage zum Change ereignis
31.05.2008 16:56:10
maine-coon
Ich möchte einen Code im Changeereignis nur dann durchlaufen lassen, wenn sich der Wert einer bestimmten Zelle ändert.
Geht das überhaupt, denn das Changeereignis reagiert ja auf alle Veränderungen von Zellwerten?
Gruß Achim

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Frage zum Change ereignis
31.05.2008 17:04:01
Hajo_Zi
Hallo Achim,
Du kannst aber die Zelladresse prüfen.
If Target.Address = "$A$1" Then

AW: Frage zum Change ereignis
31.05.2008 19:01:00
maine-coon
Hallo HaJo,
damit kann ich nichts anfangen.
Wie soll ich das verstehen?
If Target.Address has changed then mach was, ansonsten exit sub, oder wie ?
Es geht um diese Zelle,
If Not Intersect(ActiveCell, [D]) Is Nothing Then
InputBox......usw...Code
endif
die ich im Moment im Selection_Change habe, aber das ist nicht recht glücklich gewählt.
Springe ich versehentlich auf diese Zelle, muss ich immer Abbrechen klicken
Aber wenn andere Zellen sich ändern, wird ja sofort das Change_Ereignis durchlaufen.
Das Change_Ereignis soll aber nur dann durchlaufen werden, wenn sich der Wert in Zelle [D] verändert hat. Und diese Zelle wird nur durch die Eingabe eines Wertes über die Tasten verändert.
Gruß Achim

Anzeige
AW: Frage zum Change ereignis
31.05.2008 19:11:00
Hajo_Zi
Hallo Achim,
es ist schon von Vorteil, wenn man seinen Code postet. Die wahrscheinlicjhkeit ist sehr hoch, das an für sein Problem eine Antwort bekommt.
Ich kann mit der Zeile "If Target.Address has changed then " nichts anfangen
mein Excel auch nicht.
Gruß Hajo

Hajo's Antwort wäre wahrscheinlich auch...
01.06.2008 00:23:03
Luc:-?
...für dich verständlich gewesen, Achim,
wenn du dir wenigstens mal die VBE-Hilfe zur EventProc durchgelesen hättest. Darin wird nämlich auch der Standardparameter Target derselben erklärt!
Ansonsten bin ich der Meinung, dass Leute deines VBA-Levels erst mal pgmieren lernen sollten (an normalen Procs!), bevor sie sich mit EventProcs befassen!
Ansonsten RTFM (so ist wohl auch Hajo's Antwort zu verstehen...)!
Luc :-?

Anzeige
AW: Hajo's Antwort wäre wahrscheinlich auch...
01.06.2008 00:28:00
maine-coon
Gut, dass es noch andere Excel Foren gibt.

Da triffst du Hajo u.a. auch! RTFR... ;-) owT
01.06.2008 00:43:18
Luc:-?
:-?

AW: Frage zum Change ereignis
01.06.2008 11:22:37
{Boris}
Hi Achim,
was Hajo meinte:
Die Variable Target, die im Change-Event verwendet wird, hat auch eine ADRESSE.
Und diese Adresse kannst Du zu Beginn der Prozedur abfragen:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "D4" Then
MsgBox "Zelle D4 wurde geändert"
End If
End Sub


Die Messagebox erscheint hierbei nur, wenn Zelle D4 geändert wurde.
Grüße Boris

AW: Frage zum Change ereignis
01.06.2008 11:35:52
maine-coon
Hallo Boris,
erst einmal Danke für diesen Hinweis.
Also habe ich doch Recht, wenn ich diese Zeilen mal auf "Blöd-Deutsch" interpretiere.
Wenn Zelle D4 sich verändert, dann durchlaufe den Code im Change Ereignis, ansonsten Exit Sub.
Meine VBA Kenntnisse sind zu schwach, um das alles zu verstehen.
Warum steht dort in Klammern (0, 0)? Wenn die beiden Werte 0, 0 die Zeile, Spalte bedeuten, dann ist doch das nicht D4.
Ich bemühe mich immer meine Fragen so ausführlich wie nur möglich dazulegen, aber jedesmal bekomme ich eins auf die Rübe, wenn ich dann bei einer "nicht erklärten" Antwort nachfrage.
Gruß Achim

Anzeige
AW: Frage zum Change ereignis
01.06.2008 11:44:29
{Boris}
Hi Achim,
das Change-Ereignis wird immer angestoßen, sobald sich irgendein Zellwert (oder auch mehrere gleichzeitig) durch manuelles Zutun ändert. Dem Ereignis wird gleichzeitig über die Variable Target mitgeteilt, um welche(n) Zellwert(e) es sich dabei handelt.
Um jetzt zwischen verschiedenen Zellen zu unterscheiden, kann man die Variable Target zu Beginn der Prozedur (die - wie gesagt - auf jeden Fall angestoßen wird) darauf hin überprüfen, ob sie sich innerhalb eines bestimmten Bereiches befindet. Eine Möglichkeit dafür ist die Intersect-Methode, die sich dann anbietet, wenn man das Ereignis auf einen bestimmten - größeren - Bereich anwenden möchte.
Will man hingegen nur auf eine einzelne Zelle überprüfen, kann man das auch dadurch zu Beginn der Prozedur bewerkstelligen, indem man die Adresse der Variable Target abfragt:
If Target.Address(0, 0) = "C5" Then...
Das (0, 0) ist Teil der Address-Eigenschaft: Es bedeutet, dass sowohl Zeile als auch Spalte relativ ausgegeben werden. Lässt Du (0, 0) weg (wie von Hajo geschrieben), dann musst Du den Rückgabewert der Address-Eigenschaft auch auf einen absoluten Zellbezug prüfen:
If Target.Address = "$C$5" Then...
Ist Jacke wie Hose, jedoch hab ich mich an den relativen Bezug gewöhnt - daher schreibe ich immer (0, 0).
Alles klar?
Grüße Boris

Anzeige
AW: Frage zum Change ereignis
01.06.2008 11:47:22
maine-coon
Ich habe mir das mal ausgedruckt. Danke für diesen ausführlichen Hinweis. Jetzt ist mir einiges klar geworden.
Wünsche dir noch einen schönen Sonntag.
Gruß Achim

AW: Frage zum Change ereignis
01.06.2008 12:20:00
{Boris}
Hi Achim,
...zum noch tieferen Verständnis empfiehlt es sich dann in der Tat, auch einen Blick in die Excel-Hilfe zu risikieren - z.B. zur Address-Eigenschaft - indem Du den Cursor innerhalb des Wortes platzierst und dann mit F1 die Hilfe aufrufst. Dadurch erhälst Du einen Überblick über alle Parameter der Eigenschaft - im konkreten Fall:
Ausdruck.Address(RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo)
Ausdruck ist bei Dir die Variable Target. Zudem gibt es 5 Parameter, von denen ich nur die ersten beiden mit 0 (das ist gleich FALSE) angegeben habe (RowAbsolute und ColumnAbsolute). Die restlichen drei habe ich "geschlabbert", da sie standardmäßig so vorbelegt sind, wie ich es brauchte: A1-Referenz sowie NICHT-Extern. Der letzte Parameter ist sowieso nur von Interesse, wenn die Z1S1-Referenz verwendet wird.
Grüße Boris

Anzeige
Normalerweise wird einem Anfänger, so...
01.06.2008 17:32:00
Luc:-?
...wie Boris es hier getan hat, Achim,
auch mehr erklärt als Anderen, wenn man den Eindruck hat, er bemüht sich auch selbst, d.h., teilt bspw mit, dass er das und das in der Hilfe nicht verstanden hat... Aber dazu muss er die Hilfe erst mal lesen!
Rate mal wie wir zu unseren Kenntnissen gekommen sind...?
Außerdem findet man vieles auch im Archiv, denn das ist alles schon x-mal erklärt worden...
Lies mal meinen Link im oberen Beitrag, da steht das auch...!
Gruß Luc :-?

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige