Hallo,
Dabei ist aufgefallen, daß Access bei a = Eval("-5^2") -25
zurück gibt, also „-(5^2)“ rechnet.
VBA arbeitet nach einer festen Rangordnung der Operatoren,
genauso wie jede andere mir bekannte Programmiersprache. Und
da kommt der Exponential-Operator eben vor dem
Negationsoperator. Von daher ist das Ergebnis nicht falsch,
sondern nur logisch.
In VBS wird 25 zurück gegeben, das Ergebnis stimmt mit dem Ergebnis, das ich auf dem Papier ermittle überein. Mir erscheint das Ergebnis in VBS logischer, das Vorzeichen gehört ja in der Schreibweise ‚-5^2‘ zur 5. In VBS wird das auch so gerechnet. Wenn es stimmt, daß VBA richtig rechnet, rechnet VBS falsch. 
Was mir aber nicht logisch erscheint ist der Grund für den
Einsatz der Eval()-Funktion an dieser Stelle?
hmmm, der Codeschnipsel zeigt doch das Problem. Wozu soll ich Dich mit einem Seiten langen Projekt, in dem die Funktion verwendet wird, langweilen, wenn das Problem in einer Zeile sichtbar wird?
In dem Projekt steht vor einer Tetbox in einem Label: "Y = " und in die Texxtbox wird eine Funktion eingetippt, etwa ‚X^2‘ oder auch ‚2*x^2+5*x+4‘ oder ‚5*sin(x)‘ … was dem User so einfällt.
Die Funktion wird dann grafisch dargestellt. Um den String nicht zerlegen und selbst rechnen zu müssen, wird eben Eval() verwendet, das ist bequemer, MS hat das schon erledigt. OK? Reicht das als Erklärung, warum Eval()?
Gruß, Rainer