Funktionen Eval

Du kan använda funktionen Utvärdera för att beräkna ett uttryck som resulterar i en textsträng eller ett numeriskt värde.

Du kan skapa en sträng och sedan skicka den till funktionen Utvärdera som om strängen vore ett uttryck. Funktionen Utvärdera beräknar motsvarande stränguttryck och returnerar värdet. Till exempel returnerar Eval("1 + 1") värdet 2.

Om du skickar en sträng som innehåller namnet på en funktion till funktionen Utvärdera, returnerar funktionen Utvärdera resultatet av funktionen. Till exempel returnerar Eval("Chr$(65)") värdet ”A”.

Syntax

Utvärdera ( stränguttryck )

Argumentet stränguttryck är ett uttryck som utvärderas till en alfanumerisk textsträng. Exempelvis kan stränguttryck vara en funktion som returnerar en sträng eller ett numeriskt värde. Det kan också vara en referens till en kontroll i ett formulär. Argumentet stränguttryck måste utvärderas till en sträng eller ett numeriskt värde. Det kan inte utvärderas till ett Microsoft Access-objekt.

Obs!: I exemplen nedan visar vi hur du använder den här funktionen i en Visual Basic for Applications-modul (VBA). Om du vill läsa mer om hur man använder VBA, kan du välja Info för utvecklare i listrutan bredvid Sök och sedan skriva en eller flera söktermer i sökrutan.

Obs!: Om du skickar namnet på en funktion till funktionen Utvärdera, måste du använda parenteser efter namnet på funktionen i argumentet stränguttryck. Till exempel:

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

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

Debug.Print Eval("Date()")

Anmärkningar

Du kan använda funktionen Utvärdera i en beräknad kontroll i ett formulär eller en rapport eller i ett makro eller en modul. Funktionen Utvärdera returnerar en Variant som är av typen sträng eller numerisk.

Argumentet stränguttryck måste vara ett uttryck som lagras i en sträng. Om du skickar till en sträng som inte innehåller ett numeriskt uttryck till funktionen Utvärdera, utan bara en enkel textsträng, uppstår ett körningsfel. Till exempel resulterar Eval("Smith") i ett fel.

Du kan använda funktionen Utvärdera till att bestämma vilket värde som lagras i egenskapen Värde för en kontroll. Följande exempel skickar en sträng som innehåller en fullständig referens till en kontroll till funktionen Utvärdera. Sedan visas det aktuella värdet på kontrollen i en dialogruta.

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))

Du kan använda funktionen Utvärdera för att komma åt uttrycksoperatorer som inte vanligtvis är tillgängliga i en VBA-modul (Visual Basic for Applications). Du kan till exempel inte använda SQL-operatorerna Between...And eller In direkt i koden, men du kan använda dem i ett uttryck som skickas till funktionen Utvärdera.

I nästa exempel avgör om värdet för kontrollen ShipRegion i formuläret Orders är en av flera angivna förkortningar för delstater i USA. Om fältet innehåller någon av förkortningarna, får intState värdet Sand (-1). Observera att du använder enkla citattecken (') för att placera en sträng inuti en annan sträng.

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

Exempel

Det här exemplet förutsätter att du har en serie på 50 funktioner som definierats som A1, A2 och så vidare. Det här exemplet använder funktionen Utvärdera för att anropa varje funktion i serien.

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

I nästa exempel utlöses en Klickning-händelse som om användaren hade klickat på en knapp i ett formulär. Om värdet för knappens egenskap VidKlickning börjar med ett likhetstecken (=), vilket betyder att det är namnet på en funktion, anropar funktionen Utvärdera denna funktion, vilket motsvarar att utlösa händelsen Klickning. Om värdet inte börjar med ett likhetstecken måste värdet ge namnet på ett makro. Metoden KörMakro för objektet DoCmd kör det angivna makrot.

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
Utöka dina kunskaper
Utforska utbildning
Få nya funktioner först
Anslut till Office Insiders

Hade du nytta av den här informationen?

Tack för din feedback!

Tack för din feedback! Det låter som att det kan vara bra att koppla dig till en av våra Office-supportrepresentanter.

×