Tuesday, May 31, 2022

Eval-Funktion

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

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

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

Syntax

Eval ( Zeichenfolgenausdruck )

Das Argument stringexpr ist ein Ausdruck, der zu einer alphanumerischen Textzeichenfolge ausgewertet wird. Beispielsweise kann stringexpr eine Funktion sein, die eine Zeichenfolge oder einen numerischen Wert zurückgibt. Oder es kann ein Verweis auf ein Steuerelement in einem Formular sein. Das Argument stringexpr muss zu einer Zeichenfolge oder einem numerischen Wert ausgewertet werden; es kann nicht zu einem Microsoft Access-Objekt ausgewertet werden.

Hinweis: Die folgenden Beispiele veranschaulichen die Verwendung dieser Funktion in einem Visual Basic for Applications (VBA)-Modul. Um weitere Informationen zum Arbeiten mit VBA zu erhalten, wählen Sie Entwicklerreferenz in der Dropdown-Liste neben Suchen aus und geben Sie einen oder mehrere Begriffe in das Suchfeld ein.

Hinweis: Wenn Sie den Namen einer Funktion an die Funktion Eval übergeben, müssen Sie im Argument stringexpr nach dem Namen der Funktion Klammern einfügen. Zum Beispiel:

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

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

Debug.Print Eval("Datum()")

Bemerkungen

Sie können die Eval -Funktion in einem berechneten Steuerelement in einem Formular oder Bericht oder in einem Makro oder Modul verwenden. Die Eval -Funktion gibt eine Variante zurück, die entweder eine Zeichenfolge oder ein numerischer Typ ist.

Das Argument stringexpr muss ein Ausdruck sein, der in einer Zeichenfolge gespeichert ist. Wenn Sie der Eval -Funktion einen String übergeben, der keinen numerischen Ausdruck oder Funktionsnamen enthält, sondern nur einen einfachen Textstring, tritt ein Laufzeitfehler auf. Eval("Smith") führt beispielsweise zu einem Fehler.

Sie können die Eval- Funktion verwenden, um den Wert zu bestimmen, der in der Value -Eigenschaft eines Steuerelements gespeichert ist. Das folgende Beispiel übergibt eine Zeichenfolge, die einen vollständigen Verweis auf ein Steuerelement enthält, an die Eval -Funktion. Anschließend zeigt es den aktuellen Wert des Steuerelements in einem Dialogfeld an.

 Dim ctl As Control
Dim strCtl As String
Set ctl = Forms!Employees!LastName
strCtl = "Forms!Employees!LastName"
MsgBox ("The current value of " & ctl.Name & _
" is " & Eval(strCtl))

Sie können die Eval- Funktion verwenden, um auf Ausdrucksoperatoren zuzugreifen, die normalerweise nicht in einem Visual Basic for Applications (VBA)-Modul verfügbar sind. Beispielsweise können Sie die SQL-Operatoren Between...And oder In nicht direkt in Ihrem Code verwenden, aber Sie können sie in einem Ausdruck verwenden, der an die Eval -Funktion übergeben wird.

Das nächste Beispiel bestimmt, ob der Wert eines ShipRegion-Steuerelements in einem Bestellformular eine von mehreren angegebenen Abkürzungen für Bundesstaaten ist. Wenn das Feld eine der Abkürzungen enthält, ist intState True (–1). Beachten Sie, dass Sie einfache Anführungszeichen (') verwenden, um eine Zeichenfolge in eine andere Zeichenfolge einzufügen.

 Dim intState As Integer
intState = Eval("Forms!Orders!ShipRegion In " _
& "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")

Abfragebeispiele

Ausdruck

Ergebnisse

SELECT Eval("15+3") AS Expr1 FROM ProductSales GROUP BY Eval("15+3");

Wertet den Stringwert aus und berechnet das Ergebnis. Ergebnis: 18.

SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date())");

Wertet den Stringwert aus, identifiziert die Funktionen und führt sie aus. Ergebnis: aktuelles Systemdatum + aktueller Monat, angezeigt in der Spalte "NewDate".

VBA-Beispiele

Das folgende Beispiel geht davon aus, dass Sie eine Reihe von 50 Funktionen haben, die als A1, A2 usw. definiert sind. In diesem Beispiel wird die Eval -Funktion verwendet, um jede Funktion in der Reihe aufzurufen.

 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 hätte. Wenn der Wert der OnClick -Eigenschaft der Schaltfläche mit einem Gleichheitszeichen (=) beginnt, was bedeutet, dass es sich um den Namen einer Funktion handelt, ruft die Eval- Funktion die Funktion auf, was dem Auslösen des Click -Ereignisses entspricht. Wenn der Wert nicht mit einem Gleichheitszeichen beginnt, muss der Wert ein Makro benennen. Die RunMacro- Methode des DoCmd- Objekts führt das benannte Makro aus.

 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

No comments:

Post a Comment