Volatile reagiert auf fremde Dateiänderung
09.10.2006 17:32:53
Reinhard
ich habe in einer Excelinstanz 2 Dateien geöffnet. Die eine (B) hat eine benutzerdefierte Funktion mit "Application.Volatile" im Code.
Die Dateien haben keinerlei Verweise aufeinander.
Wenn ich in der Datei A, die sogar gar keinen Code hat, eine Zelle lösche wurde dann die BDF der anderen Datei B neu berechnet und es kam die selbstgeschriebene Fehlermeldung der BDF. Ich musste dann die BDF exakter referenzieren mit "Thisworkbook.Worksheet..." anstatt nur "Worksheet..." um den Fehler zu eliminieren.
Wenn ich nun Datei A schliesse, kommt wieder die Fehlermeldung aus der Funktion in Datei B.
Wenn ich nun Datei A wieder öffne, so wird anscheinend 1mal die Funktion angeregt (sie ist in 3 Zellen, deshalb wird sie pro Anregung 3 mal ausgeführt) dann kommt eine Fehlermeldung dass ein Zirkelbezug besteht, die Ergebnisse der BDF gehen auf 0, dann wird die BDF noch 2mal angeregt, jedesmal mit ihrer Fehlermeldung.
Sicher, ohne olatile passiert das nicht, aber dann reagiert die BDF nicht auf Autofilter.
Datei A: https://www.herber.de/bbs/user/37269.xls
Datei B:
Die Datei https://www.herber.de/bbs/user/37277.xls wurde aus Datenschutzgründen gelöscht
Option Explicit
Function SK_SUMME(Zelle As Range) As Double
Dim N As Integer, Z As String, Zei As Long
On Error GoTo Fehler
MsgBox "funktion "
Application.Volatile
Application.ScreenUpdating = False
For N = 1 To Len(Zelle.Value)
If IsNumeric(Mid(Zelle.Value, N, 1)) Then Z = Z & Mid(Zelle.Value, N, 1)
Next N
With Worksheets("Kostenarten")
For Zei = 1 To .UsedRange.Rows.Count
If .Cells(Zei, 2) = Z Then SK_SUMME = SK_SUMME + .Cells(Zei, 3)
Next Zei
End With
Exit Function
Application.ScreenUpdating = True
Fehler:
MsgBox "Hitzefrei :-)"
Application.ScreenUpdating = True
End Function
Gruß
Reinhard