Eval-Funktion (Auswerten)

Um einen Ausdruck auszuwerten, der zu einer Textzeichenfolge oder einem numerischen Wert führt, können Sie die Eval-Funktion verwenden.

Sie können eine Zeichenfolge erstellen und dann an die Eval-Funktion übergeben, als ob die Zeichenfolge ein tatsächlicher Ausdruck wäre. Die Eval-Funktion wertet den Zeichenfolgenausdruck aus und gibt seinen Wert zurück. Beispielsweise gibt Eval("1 + 1") den Wert 2 zurück.

Wenn Sie eine Zeichenfolge an die Eval-Funktion übergeben, die den Namen einer Funktion enthält, gibt die Eval-Funktion den Rückgabewert der Funktion zurück. Beispielsweise gibt Eval("Chr$(65)") "A" zurück.

Syntax

Eval(stringexpr)

Das Argument stringexpr ist ein Ausdruck, der in eine alphanumerische Textzeichenfolge ausgewertet wird. stringexpr kann z. B. eine Funktion sein, die eine Zeichenfolge oder einen numerischen Wert ausgibt. Oder es kann ein Verweis auf ein Steuerelement in einem Formular sein. Das Argument stringexpr muss in eine Zeichenfolge oder in einen numerischen Wert ausgewertet werden. Es kann nicht in ein Microsoft Access-Objekt ausgewertet werden.

Hinweis : Die folgenden Beispiele zeigen die Verwendung dieser Funktion in einem VBA-Modul (Visual Basic für Applikationen). Wenn Sie weitere Informationen zum Arbeiten mit VBA wünschen, wählen Sie Entwicklerhilfe in der Dropdownliste neben Suchen, und geben Sie einen oder mehrere Begriffe in das Suchfeld ein.

Hinweis : Wenn Sie den Namen einer Funktion an die Eval-Funktion übergeben, müssen Sie den Namen der Funktion im Argument stringexpr in Klammern einschließen. Beispiel:

' ShowNames is user-defined function.
Debug.Print Eval("ShowNames()")

Debug.Print Eval("StrComp(""Joe"",""joe"", 1)")

Debug.Print Eval("Date()")

Hinweise

Für ein Berechnetes Steuerelement in einem Formular oder in einem Bericht können Sie die Eval-Funktion verwenden. Die Eval-Funktion gibt eine Variant-Datentyp-Variable zurück, die eine Zeichenfolge oder ein numerischer Typ ist.

Das Argument stringexpr muss ein Ausdruck sein, der in einer Zeichenfolge gespeichert wird. Es tritt ein Laufzeitfehler auf, wenn Sie eine Zeichenfolge, die keinen numerischen Ausdruck enthält, an die Eval-Funktion übergeben, die keinen numerischen Ausdruck oder keinen Funktionsnamen enthält. Beispielsweise führt Eval("Smith") zu einem Fehler.

Sie können die Eval-Funktion verwenden, um den Wert zu ermitteln, der in der Value-Eigenschaft eines Steuerelements gespeichert ist. Im folgenden Beispiel wird eine Zeichenfolge, die einen vollständigen Verweis auf ein Steuerelement enthält, an die Eval-Funktion übergeben. Anschließend wird der aktuelle Wert des Steuerelements in einem Dialogfeld angezeigt.

Dim ctl As Control
Dim strCtl As String
Set ctl = Formulare!Personal!Nachname
strCtl = "Formulare!Personal!Nachname"
MsgBox ("Der aktuelle Wert von " & ctl.Name & _
" lautet " & Eval(strCtl))

Sie können die Eval-Funktion verwenden, um auf Ausdrucksoperatoren zuzugreifen, die normalerweise in einem Modul für Visual Basic für Applikationen nicht verfügbar sind. Beispielsweise können Sie die SQL-Operatoren Between...And oder In nicht verwenden, aber Sie können sie in einem Ausdruck verwenden, der an die Eval-Funktion übergeben wird.

Im nächsten Beispiel wird ermittelt, ob der Wert eines Vertriebsregion-Steuerelements eines von mehreren Bundeslandabkürzungen ist. Wenn das Feld eine der Abkürzungen enthält, wird intState auf Wahr (–1) festgelegt. Um eine Zeichenfolge innerhalb einer anderen Zeichenfolge zu verwenden, sollten Sie einfache Anführungszeichen (') verwenden.

Dim intState As Integer
intState = Eval("Formulare!Bestellungen!Bestimmungsregion In " _
& "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")

Beispiel

Im folgenden Beispiel wird davon ausgegangen, dass Sie eine Reihe von 50 Funktionen als A1, A2 usw. definiert haben. Dieses Beispiel verwendet die Eval-Funktion zum Aufrufen der einzelnen Funktionen in der Reihe.

Sub CallSeries()
Dim intI As Integer
For intI = 1 To 50
Eval("A" & intI & "()")
Next intI
End Sub

Das nächste Beispiel löst ein Click-Ereignis aus, als ob der Benutzer auf eine Schaltfläche in einem Formular geklickt hat. Wenn der Wert der OnClick-Eigenschaft der Schaltfläche mit einem Gleichheitszeichen (=) beginnt, was darauf hinweist, dass es sich um den Namen einer Funktion handelt, ruft die Eval-Funktion die Funktion auf, die dem Click-Ereignis entspricht. Der Wert muss ein Makro benennen, wenn der Wert nicht mit einem Gleichheitszeichen beginnt. Das benannte Makro wird in der AusführenMakro-Methode des DoCmd-Objekts ausgeführt.

Dim ctl As Control
Dim varTemp As Variant
Set ctl = Forms!Contacts!HelpButton
If (Left(ctl.OnClick, 1) = "=") Then
varTemp = Eval(Mid(ctl.OnClick,2))
Else
DoCmd.RunMacro ctl.OnClick
End If
Teilen Facebook Facebook Twitter Twitter E-Mail E-Mail

War diese Information hilfreich?

Sehr gut. Noch anderes Feedback?

Was können wir verbessern?

Vielen Dank für Ihr Feedback!

×