Hallo! Also die Änderungen werden durch eine Ereignisprozedur abgefangen. Die liefert Excel so mit und man kann damit auf bestimmte Ereignisse reagieren (bspw. Auswahl, von Blätter , vor dem Drucken etc - im VBE bei Worksheet rechts in den Kästchen auszuwählen). Bei Änderungen / Selections liefert die Prozedur häufig ein Target mit. Das ist die Range / Bereich, der geändert wurde. Wenn du nur Target verwendest, steht das für Target.value (hatte ich weggelassen, da eh der Standartwert) und gibt den Inhalt an. Target hat wie jede Range einige Eigenschaften. In diesem Fall habe ich die Adresse verwendet. Die Adresse wird dabei mit $ Zeichen angegeben. Also bei dir hätte sie $G$3 ausgegeben. Nun hätte man in der Zeile hier
If Replace(Target.Address, "$" , "" ) = "G3" Then
mit "$G$3" vergleichen können und das Replace weglassen können, was dann zwar kürzer wäre aber mE schlecht zu lesen. Deshalb ersetzte ich in der Adresse die $ durch nix. Das geht mit der replace Methode. Übrig bleibt nach dem Replace die "reine" Zellenbezeichnung. Und die wird dann mit der Zelle verglichen, die dein Bezug ist.
Falls das stimmt, wird im weiteren Code nur noch die Spaltezeile geändert (in Abhängigkeit des Inhaltes) und in den Cells() die spalte dadurch angesprochen.
VG
|