Application.Volatile funktioniert nicht
07.05.2018 14:39:44
japes36
ich habe eine Datei mit einem Sheet pro Jahr. In jedem Sheet ist u.a. eine Art Timeline mit Jahreskalender, in dem die Feiertage automatisch rot gefärbt werden sollen. In der Datei ist noch ein Sheet, in dem die Feiertage berechnet werden für das jeweilige Kalenderjahr.
Ich habe eine kleine Public Function, mit der ich die Jahreszahl aus dem jeweiligen aktiven Sheet extrahiere, damit die Feiertagsberechnung immer mit dieser Zahl rechnen kann.
Public Function FTJahr() As String
Application.Volatile
FTJahr = Right(ActiveSheet.Name, 4)
End Function
in einer Zelle des entsprechenden Sheets steht =FTJahr() und gibt damit die jeweilige Jahreszahl zurück.
Application.Volatile soll doch dafür sorgen, dass eine Neuberechnung erfolgt. Tut es aber nicht. Wenn ich zwischen den Sheets und somit zwischen den Jahren hin und her wechsle, bleibt die Jahreszahl gleich. Ich muss entweder in die Zelle klicken und Enter drücken oder im Ribbon unter Formeln auf 'Neu Berechnen', damit die korrekte Jahreszahl drinsteht.
Ich habe mir jetzt beholfen, in dem ich in jedes Sheet ein Worksheet_Activate() mit Application.CalculateFull drin habe.
Warum geht das mit dem Volatile nicht (mehr)? Es geht ja soweit mit dem workaround. Aber ich wills verstehen.
Danke wenn jemand was weiß :)