Die Eval-Funktion

Die Eval-Funktion erlaubt das Auswerten von Ausdrücken, die als Parameter an diese Funktion übergeben werden. Damit können Sie sich verschiedene Anwendungszwecke erschließen – zum Beispiel die Eingabe von Berechnungen in einfache Textfelder oder das Ermitteln von Eigenschaften der Benutzeroberflächenelemente ohne Verwendung des VBA-Editors. Dieser Beitrag zeigt die Möglichkeiten der Eval-Funktion auf.

Eval unter VBA

Eine der einfachsten Einsatzmöglichkeiten der Eval-Funktion ist das Berechnen eines Ausdrucks, den Sie als Parameter der Eval-Funktion übergeben. Damit lässt sich dann beispielsweise die Summe aus 1 und 2 ermitteln:

Debug.Print Eval("1+2")
  3

Sie sehen schon am ersten Beispiel, dass wir den zu berechnenden Ausdruck in Anführungszeichen einfassen. Das ist erforderlich, weil die Eval-Funktion eigentlich nur Parameter des Typs String entgegennimmt. Bei als numerisch zu interpretierenden Parameterwerten, zum Beispiel einfache Zahlenwerte wie 12, interpretiert die Funktion dies korrekt. Auch Berechnungen wie 1+2 werden noch ohne Angabe von Anführungszeichen als numerische Werte erkannt und toleriert.

Wenn Sie jedoch beispielsweise Funktionen wie Date() aufrufen, erhalten Sie ohne Anführungszeichen eine Fehlermeldung (Laufzeitfehler 2040, Der von Ihnen eingegebene Ausdruck enthält eine ungültige Zahl.).

Das Berechnen von 1+2 ist nun noch kein Hexenwerk, denn das bekommen Sie auch ohne Eval hin:

Debug.Print 1+2
  3 

Aber vielleicht haben Sie eine Funktion, die zwei Integer-Zahlen addiert:

Public Function Addieren(int1 As Integer,  int2 As Integer) As Integer
     Addieren = int1 + int2
End Function

Dann können Sie diese ebenfalls per Eval aufrufen:

Public Sub EvalAddieren()
     Debug.Print Eval("Addieren(1,2)")
End Sub

Berechnung per InputBox

Wenn Sie dem Benutzer sehr einfach eine Berechnungsmöglichkeit bereitstellen wollen, gelingt dies mit der folgenden Prozedur. Diese fragt per InputBox den zu berechnenden Ausdruck ab und gibt das Ergebnis aus:

Public Sub EvalPerInput()
     Dim strEval As String
     strEval = InputBox("Zu berechnender Ausdruck:")
     MsgBox "Das Ergebnis lautet: " & vbCrLf & vbCrLf  & Eval(strEval)
End Sub

Ein Beispiel für die Nutzung dieser Prozedur sehen Sie in Bild 1.

Eval per InputBox-Funktion

Bild 1: Eval per InputBox-Funktion

Berechnungen in Textfeldern

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

TestzugangOder bist Du bereits Abonnent? Dann logge Dich gleich hier ein. Die Zugangsdaten findest Du entweder in der aktuellen Print-Ausgabe auf Seite U2 oder beim Online-Abo in der E-Mail, die Du als Abonnent regelmäßig erhältst:

Schreibe einen Kommentar