1.1k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen,
ich habe da ein Problem, mit dem ich einfach nicht weiter komme!
Vielleicht denke ich auch nur zu kompliziert und es gibt eine einfache Lösung dafür.

In ein Tabellenfeld wird ein Datum in der Form TT.MM eingegeben. Das Jahr soll aber
nicht das laufende Jahr sein, sondern muß, anwendungsbedingt, ein Jahr sein, welches
in einer Variablen in einem anderen Tabellenblatt vorgegeben ist.
Aus 01.06.2009 muß bspw. 01.06.2010 oder 01.06.2011 oder 01.06.2012 werden.
Ich habe versucht das Problem über das >Worksheet_Change< Ereignis zu lösen.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim datum_von As Date
If Not Application.Intersect(Target, Range("A1:A99")) Is Nothing Then
datum = Left(Target.Offset(0), 6) & [VLOOKUP(32, Variable!$B$1:$D$37, 2)]
Target.Offset(0).Value = datum
End Sub
Das funktioniert auch soweit.
Das Problem dabei ist, dass nach dem Einsetzen des veränderten Datums
in das Tabellenfeld (Target.Offset(0).Value = datum) das >Worksheet_Change< Ereignis
unmittelbar erneut ausgelöst wird. Daraus resultiert eine Schleife, die sich bei jeder Eingabe
ca. 200 (?) mal wiederholt und dann endet!

Wäre nett, wenn mir jemand bei der Lösung helfen könnte!

Danke im voraus sagt
hans-werner

3 Antworten

0 Punkte
Beantwortet von
Hallo

True/False

Application.EnableEvents = False
0 Punkte
Beantwortet von
@Dummy0815

Danke für den Tip, dieses Ereignis kannte ich nicht!
Problem gelöst.

Hans-Werner
0 Punkte
Beantwortet von
Hallo

Eine Einbindung könnte dann so aussehen

Global AppEnable As Boolean

Sub EventOn()
Application.EnableEvents = AppEnable
End Sub
Sub EventOff()
AppEnable = Application.EnableEvents
Application.EnableEvents = False
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Call EventOff

Call EventOn
End Sub
...