UDF soll nicht auf Daten anderer Dateien zugreifen
01.07.2008 10:38:00
Peter
Ich habe eine UDF, die ich in mehreren Tabellen verwende, die gleichzeitig offen sein können. Im Moment habe ich das Problem, dass wenn Datei1 deaktiviert wird und Datei2 aktiviert wird, die Formeln in Datei1 aktualisiert werden.
Muss ich daher den Bereichen in der UDF auch den Dateinamen mitgeben oder muss ich nur sReference (bezieht sich auf keinen benannten Bereich, sondern auf eine Zelle) mit dem Dateinamen ergänzen oder gibt es einen anderen Trick, wie ich das Problem lösen kann?
Falls eine Variable mit dem Dateinamen erweitert werden muss - wie ist da der Syntax?
Danke für eine Antwort.
Gruss, Peter
sReference = Range("link").Parent.Name & "!" & sReference
Option Explicit
Public Function cw(RefZelle As Variant, _
Optional Periode As String = "_A", _
Optional Positiv As Boolean = True) As Variant
'Formel eingeben (Beispiel: Referenz in G24 eingetragen): =cw(G24;"_A";1) - Standardvorzeichen
'Formel eingeben (Beispiel: Referenz in G24 eingetragen): =cw(G24;"_A";0) - anderes Vorzeichen
Application.Volatile
Dim sFormula As String, sReference As String
If TypeName(RefZelle) = "String" Then
sReference = """" & RefZelle & """"
Else
sReference = RefZelle.Address(0, 0)
sReference = Range("link").Parent.Name & "!" & sReference
End If
sFormula = "=" & IIf(Positiv, "", "-") & _
"(SUMPRODUCT((Ref=" & sReference & _
")*((LEFT(_C)=""C"")*(" & Periode & "0))*" & Periode & ")+SUMPRODUCT((RefW=" & sReference & _
")*((LEFT(_C)=""D"")*(" & Periode & "0))*" & Periode & "))"
If Len(sFormula) > 256 Then
cw = "Error:Formel zu lang"
Else
cw = Evaluate(sFormula)
End If
End Function