Leider funktioniert das bisher nur über eine Sub, soll aber über eine Formel im Arbeitsblatt laufen.
Hier nur das "abgespeckte" Problem:
Function AdvancedEvaluate(ByVal expression As String) As Variant
Const TEMPNAME As String = "TEMP_DEFINED_NAME"
Debug.Print TEMPNAME & " : " & expression
ActiveWorkbook.Names.Add Name:=TEMPNAME, RefersTo:=expression, Visible:=True
Debug.Print "- Angelegt!"
AdvancedEvaluate = Application.Evaluate("=" & TEMPNAME) ' AdvancedEvaluate =Excel.Application.Evaluate("=" & TEMPNAME)
Debug.Print "-> " & AdvancedEvaluate
' AdvancedEvaluate = 1
End Function
Sub testEval()
Debug.Print "------ Sub --------"
X = AdvancedEvaluate("=today()+1")
End Sub
Function TEste()
Debug.Print "------ Func -------"
TEste = AdvancedEvaluate("=today()-1")
End Function
Im Direktbereich bekomme ich, je nach Aufruf folgende Rückmeldungen:
Sub "testEval" per Start im Editor gestartet
------ Sub --------
TEMP_DEFINED_NAME : =today()+1
------ Func -------
TEMP_DEFINED_NAME : =today()-1
- Angelegt!
-> 45204
Formel "=TEste()" per Enter im XLS-Sheet gestartet
------ Func -------
TEMP_DEFINED_NAME : =today()-1