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

Eine weitere Möglichkeit für den Einsatz der Eval-Funktion sind Textfelder. Dazu legen wir ein neues, leeres Formular an und fügen diesem ein Textfeld namens txtAusdruck zum Eingeben des zu berechnenden Ausdrucks hinzu. Außerdem legen wir ein zweites Textfeld namens txtErgebnis an. Für das Ereignis Nach Aktualisierung des Textfeldes txtAusdruck hinterlegen wir die folgende Prozedur, welche den Inhalt des Textfeldes txtAusdruck mit der Eval-Funktion berechnet und in das Textfeld txtErgebnis schreibt:

Private Sub txtAusdruck_AfterUpdate()
     Me!txtErgebnis = Eval(Me!txtAusdruck)
End Sub

Damit braucht der Benutzer nur den zu berechnenden Ausdruck in das erste Textfeld einzugeben und die Eingabetaste zu betätigen, um den Ausdruck zu berechnen (siehe Bild 2).

Ausdruck im Textfeld berechnen

Bild 2: Ausdruck im Textfeld berechnen

Zugriff auf Formulare, Steuerelemente und ihre Eigenschaften

Mit diesem Textfeld können Sie auch einfach auf Formulare, Steuerelemente und ihre Eigenschaften zugreifen. Um beispielsweise den Namen des aktiven Steuerelements zu ermitteln, geben Sie den folgenden Ausdruck ein:

Screen.ActiveControl.Name

Das Ergebnis sehen Sie in Bild 3.

Ausgabe des Namens des aktiven Steuerelements

Bild 3: Ausgabe des Namens des aktiven Steuerelements

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar