Ich trage einen Namen in C1 ein und schließe mit Enter ab. Das soll Excel zu Anlaß nehmen, eine bestimmte Routine ablaufen zu lassen (zB diese Eintragung in die Kopfzeile zu schreiben).
Das habe ich von Matthias als Antwort bekommen:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.AddressLocal = "$C$1" Then Mach_hin
End Sub
Sub Mach_hin()
MsgBox "Jetzt bin ich mal kurz in dieser Prozedur..."
End Sub
Die Diskussion ist damals irgendwie stecken geblieben. Bei ihm geht das, bei mir nicht. Warum? Denn die Anweisung in der zweiten Zeile ("Wenn c1 die Zieladresse ist, führe Folgendes aus") aktiviert die Routine dann, wenn c1 aktuell ist, also dann, wenn ich zu c1 gehe. Nun mein Problem: Wenn ich zu c1 hinkomme, wird das Skript ausgeführt, und nicht wenn ich es verlasse. Ich gehe zu c1, DANN schreibe ich was rein, DANN drück ich Enter und bin dadurch in der nächsten Zelle, und nichts passiert. Erst wenn ich wieder zu C1 zurückkehre, wird das gewünschte Skript ausgeführt.
Nebenbei gesagt, man kann ja in den Optionen einstellen, dass der Cursor nicht zur nächsten Zelle gehen soll, wenn ich mit der Eintragung fertig bin. Aber das ist möglich, da ja jeder Anwender seine eigenen Einstellungen hat.
Von Urs kam dann die Antwort:
Option Explicit
Dim bln As Boolean
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim rng As Range
Set rng = Range("D2")
If Target.Address = rng.Address Then bln = True
If bln = True And Target.Address <> rng.Address Then
und dann Dein Code
end if
end if
Und das geht überhaupt nicht, insbesondere das zweite "end if" am Schluß. Und auch ohne geht es nicht.
Es muss doch eine Möglichkeit geben, ein Programm zu starten, wenn eine Eintragung in einer Zelle vorgenommen worden ist.
Bitte um Hiiiiilfeeeeeee,
Eure Barbara.