Abarbeitungsreihenfolge Formel in Zelle schreiben

  • Excel

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

    Abarbeitungsreihenfolge Formel in Zelle schreiben

    Guten Tag Zusammen,

    ich möchte per Knopfdruck auf eine Befehlsschaltfläche, Eintrage in der Tabelle zurücksetzen und in bestimmte Zellen eine Formel schreiben.
    Die gewünschten Einträge lassen sich zurücksetzen und die Formeln werden in die gewünschte Zelle geschrieben, allerdings klappt das mit den Formeln nur einzeln.
    Das heißt, wenn ich den Code (wie unterhalb) schreibe, füllt er nur eine Zelle (1/4) mit der gewünschten Formel, die anderen drei Zellen werden nicht befüllt. Ich habe alle Formeln einzeln getestet und diese funktionieren auch soweit.

    Quellcode

    1. Range("C8").Formula = "=WENN($AA1=1,"""",WENN($AA1=2,""FERTIGUNGSMATERIAL"",""ERSATZTEIL""))"
    2. Range("C8").Select
    3. Application.SendKeys "{F2}" + "{ENTER}", True
    4. Range("F8").Formula = "=WENN($AA$1=1,WENN(ISTLEER(F7),"""",RUNDEN(F7*20/100,-1)),WENN($AA$1=2,"""",WENN(ISTLEER(F7),"""",WENN(H13="""","""",WENN(ISTFEHLER(H13*F7/D63),"""",RUNDEN(H13*F7/D63,-1))))))"
    5. Range("F8").Select
    6. Application.SendKeys "{F2}" + "{ENTER}"
    7. Range("D34").Formula = "=I24*0.01"
    8. Range("D34").Select
    9. Application.SendKeys "{F2}" + "{ENTER}", True
    10. Range("I74").Formula = "=WENN($AA$1=1,"""",WENN($AA1=2,""FM"",""ET""))"
    11. Range("I74").Select
    12. Application.SendKeys "{F2}" + "{ENTER}", True


    Ich bitte um Hilfe, der Code muss so funktionieren, dass per Knopfdruck auf die Befehlsschaltfläche alle Zellen mit der entsprechenden Formel befüllt werden :)
    Hallo @kuebi

    Schreib die Excel-Funktionen in VBA auf Englisch, dann funktioniert es ohne SendKeys.

    Visual Basic-Quellcode

    1. Range("C8").Formula = "=IF($AA1=1,"""",IF($AA1=2,""FERTIGUNGSMATERIAL"",""ERSATZTEIL""))"
    2. Range("F8").Formula = "=IF($AA$1=1,IF(ISBLANK(F7),"""",ROUND(F7*20/100,-1)),IF($AA$1=2,"""",IF(ISBLANK(F7),"""",IF(H13="""","""",IF(ISERROR(H13*F7/D63),"""",ROUND(H13*F7/D63,-1))))))"
    3. Range("D34").Formula = "=I24*0.01"
    4. Range("I74").Formula = "=IF($AA$1=1,"""",IF($AA1=2,""FM"",""ET""))"


    Online Formel-Übersetzer -> de.excel-translator.de/translator/
    Liste der Befehle DE-EN -> excelnova.org/excel-ressourcen…ersetzt-deutsch-englisch/
    Range.Formula ist die universelle Formel in Englisch.
    Die zieht in allen Sprachumgebungen.
    Wenn du deutsche Formeln eintragen möchtest, kannst du das theoretisch in Range.FormulaLocal
    Sobald aber das ExcelSheet mit anderen Regional Settings aufgerufen wird, fliegt das Programm auf die Schnauze.
    Deswegen sollte man das Schreiben einer Formel immer in Englisch machen.
    Allenfalls das Auslesen der Formel zu Übersetzungszwecken darf im lokalen Format geschehen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --