AW: Formel als Makro / Fluch der langen Namen
Uwe
Wenn die Zellen, aus dennen die Werte gezogen werden sollen, fest sind, dann erfüllt ein parameterloser Aufruf einer Funktion den Zweck, wenn man nicht prüfen will, ob bei verwendung von kürzeeren Blattnamen, das ganze auch weiterhin als Zellenformel sinnvoll bleibt.
Modul in der Arbeitsmappe anlegen:
Option Explicit
Function ProChg() As Double
Dim ws1 As worksheet, ws2 As Worksheet
Set ws1 = Worksheets("[M610 - FinalCurrent]M610 - FinalCurrent ")
Set ws2 = Worksheets("2 in 1 Previous")
'=IF ws1.$E$19>0 then ;
' (ws2.G139/ws1.G9)-1;
'else
'IF ws1.$D$19; then
' (ws2.C139+ws2.D139)/(ws1.C9+ws1.D9)-1;
'Else
'(ws2.C139/ws1.C9)-1
If ws1.Range("E19") > 0 Then
ProChg = ws2.Range("G139") / ws1.Range("G9") - 1
Else
If ws1.Range(D19) Then
ProChg = (ws2.Range("C139") + ws2.Range("D139")) / (ws1.Range("C9") + ws1.Range("D9")) - 1
Else
ProChg = ws2.Range("C139") / ws1.Range("C9") - 1
End If
End Function
und dann in dei gewünsche Zelle den Zellenbefehl: =ProChg()
Du kannst allerding auch direkt ein Makro anlegen, das Du über eine STRG-Sequenz starten kannst. (Menü Extras...Makros... oder [ALT]+[F8] : neuen Makroname eingeben ... Erstellen und den Code
Sub Makro1()
ActiveCell.FormulaR1C1 = "=VergleichsErgebnis()"
End Sub
eingeben. Wenn Du im Dialag zum Anlegen/Bearbeiten des Makros ([ALT]+[F8]) unter dem Punkt Optionen das Tastenkürzel z.B. [STRG]+[r] vorgegben hast, dann kannst Du nun das Makro starten, und das Ergebnis wird in die Zelle eingetragen, die gerade aktiv ist (Vorsicht vor Überschreibung)
Bitte die Formeln zur Berechnung des Bergleichswerts besonders noch einmal prüfen!
Insbesondere auch die Bedingungsanweisung, wo der Zelleninhalt D19 nur auf logisch WAHR oder FALSCH getestet wird {Ausschnitt aus Deiner Zellenformel: ...IF('[M610 - FinalCurrent]M610 - FinalCurrent '!$D$19;((...}
Hoffe, das kein Fehler im Code enthalten ist, da ich ihn nicht prüfen konnte.
Gruß!