Formel in Zelle schreiben und dabei Variable einbauen

  • Excel

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von dwt73.

    Formel in Zelle schreiben und dabei Variable einbauen

    Tach zusammen,

    bin grad kurz vorm Durchdrehen, weil ich an einer vermeintlich einfachen Aufgabe scheitere.
    In Zelle O2 steht meine aktuelle Summe, und ich will in P2 eine Formel einbauen, die den Wert aus O2 mit einem bestimmten Wert multipliziert oder dividiert. Diesen Wert berechne ich zur Laufzeit, er steht in der Variablen v_Div.

    Visual Basic-Quellcode

    1. Public v_aktKW As Integer
    2. Public Const c_AnzKWdiesesJahr As Integer = 52
    3. ' hier zwischendrin wird irgendwo v_aktKW gesetzt
    4. Dim v_Div As Double
    5. v_Div = c_AnzKWdiesesJahr / v_aktKW
    6. Sheets(c_ShtBer).Range("P2").FormulaR1C1 = "=RC[-1]" * v_Div

    Typen unverträglich


    Visual Basic-Quellcode

    1. v_Div = c_AnzKWdiesesJahr / v_aktKW
    2. Sheets(c_ShtBer).Range("P2").FormulaR1C1 = "=RC[-1]*" & v_Div

    Anwendungsfehler


    Visual Basic-Quellcode

    1. v_Div = c_AnzKWdiesesJahr / v_aktKW
    2. Sheets(c_ShtBer).Range("P2").FormulaR1C1 = "=RC[-1]/v_Div"

    läuft durch, aber in der Zelle steht dann: "=O2/v_Div", was dann #NAME liefert


    Visual Basic-Quellcode

    1. Sheets(c_ShtBer).Range("P2").FormulaR1C1 = "=RC[-1]/cstr(v_Div)"

    das gleiche, nur eben "=O2/cstr(v_Div)"


    Visual Basic-Quellcode

    1. Sheets(c_ShtBer).Range("P2").FormulaR1C1 = "=RC[-1]/" & CStr(v_Div)

    Anwendungsfehler

    Vielleicht hab ich da auch grad ein Brett vorm Kopf... :wacko:

    Also, besten Dank schon mal!

    Timo

    RE: Formel in Zelle schreiben und dabei Variable einbauen

    dwt73 schrieb:


    Visual Basic-Quellcode

    1. v_Div = c_AnzKWdiesesJahr / v_aktKW
    2. Sheets(c_ShtBer).Range("P2").FormulaR1C1 = "=RC[-1]/v_Div"

    läuft durch, aber in der Zelle steht dann: "=O2/v_Div", was dann #NAME liefert


    Bei dieser Variante kannst du den Namen "v_Div" in der Arbeitmappe definieren. Dann funktioniert es:

    Visual Basic-Quellcode

    1. ActiveWorkbook.Names.Add Name:="v_Div", RefersToR1C1:="=" & c_AnzKWdiesesJahr & "/" & v_aktKW
    2. Sheets(c_ShtBer).Range("P2").FormulaR1C1 = "=RC[-1]/v_Div"



    dwt73 schrieb:


    Visual Basic-Quellcode

    1. Sheets(c_ShtBer).Range("P2").FormulaR1C1 = "=RC[-1]/" & CStr(v_Div)

    Anwendungsfehler


    Das kommt daher, dass man in VBA bei Formelzuweisungen das englische Zahlenformat nehmen muss. Man muss also "," durch "." ersetzen:

    Visual Basic-Quellcode

    1. Sheets(c_ShtBer).Range("P2").FormulaR1C1 = "=RC[-1]/" & Replace(CStr(v_Div), ",", ".")


    Gleiches gilt für den oberen Anwendungsfehler. Dieser würde dann mit Replace auch funktionieren.

    dwt73 schrieb:


    Visual Basic-Quellcode

    1. Sheets(c_ShtBer).Range("P2").FormulaR1C1 = "=RC[-1]" * v_Div


    Hier wird ein String ("=RC[-1]") mit einem Zahlwert (v_Div) multipliziert, daher "Typen unverträglich"