Funktionen Eval

Du kan bruge funktionen Eval til at evaluere et udtryk, der resulterer i en tekststreng eller en numerisk værdi.

Du kan oprette en streng og derefter videregive den til funktionen Eval, som om strengen var et faktisk udtryk. Funktionen Eval evaluerer strengudtryk og returnerer dets værdi. Eksempelvis returnerer Eval("1 + 1") 2.

Hvis du videregiver en streng, der indeholder navnet på en funktion, til funktionen Eval, returnerer funktionen Eval funktionens returværdi. Eksempelvis returnerer Eval("Chr$(65)") "A".

Syntaks

Eval ( strengudtryk )

Argumentet strengudtryk er et udtryk, der evalueres til en alfanumerisk tekststreng. Eksempelvis kan strengudtryk være en funktion, der returnerer en streng eller en numerisk værdi. Eller det kan være en reference til et kontrolelement i en formular. Argumentet strengudtryk skal evalueres til en streng eller numerisk værdi. Det kan ikke evalueres til et Microsoft Access-objekt.

Bemærk: Følgende eksempler demonstrerer brugen af denne funktion i et VBA-modul (Visual Basic for Applications). Hvis du vil have mere at vide om at arbejde med VBA, skal du vælge Udviklerreference på rullelisten ud for Søg og skrive ét eller flere ord i søgefeltet.

Bemærk: Hvis du videregiver navnet på en funktion til funktionen Eval, skal du medtage parenteser efter funktionens navn i argumentet strengudtryk. Eksempel:

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

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

Debug.Print Eval("Date()")

Bemærkninger

Du kan bruge funktionen Eval i et beregnet kontrolelement i en formular eller en rapport eller i en makro eller et modul. Funktionen Eval returnerer en Variant, der enten er en streng eller en numerisk type.

Argumentet strengudtryk skal være et udtryk, der lagres i en streng. Hvis du videregiver en streng til funktionen Eval, som ikke indeholder et numerisk udtryk, eller et funktionsnavn, men kun en simpel tekststreng, opstår der en kørselsfejl. Eksempelvis medfører Eval("Smith") en fejl.

Du kan bruge funktionen Eval til at bestemme den værdi, der lagres i egenskaben Værdi for et kontrolelement. I følgende eksempel videregives en streng, der indeholder en fuld reference til et kontrolelement, til funktionen Eval. Derefter vises den aktuelle værdi af kontrolelementet i en dialogboks.

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 bruge funktionen Eval til at få adgang til operatorer, der ikke normalt er tilgængelige i et VBA-modul (Visual Basic for Applications). Eksempelvis kan du ikke bruge SQL-operatorerne Between...And eller In direkte i din kode, men du kan bruge dem i et udtryk, der videregives til funktionen Eval.

Det næste eksempel bestemmer, om værdien af kontrolelementet Modtagerområde i en ordreformular er en af flere angivne forkortelser for stater. Hvis feltet indeholder en af forkortelserne, bliver intStateSand (-1). Bemærk, at du bruger enkelte anførselstegn (') til at medtage en streng i en anden tekststreng.

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

Eksempel

I følgende eksempel forudsættes det, at du har en serie af 50 funktioner defineret som A1, A2 og så videre. I dette eksempel bruges funktionen Eval til at kalde hver funktion i serien.

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

Det næste eksempel udløser en Klik-hændelse. ligesom hvis brugeren havde klikket på en knap på en formular. Hvis værdien af knappens OnClick-egenskab begynder med et lighedstegn (=), hvilket betyder, at det er navnet på en funktion, kalder funktionen Eval den funktion, som svarer til at udløse Klik-hændelsen. Hvis værdien ikke begynder med et lighedstegn, skal værdien nævne en makro. Metoden RunMacro for objektet DoCmd kører den nævnte makro.

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
Udvid dine færdigheder
Gå på opdagelse i kurser
Få nye funktioner først
Bliv Office Insider

Var disse oplysninger nyttige?

Tak for din feedback!

Tak for din feedback! Det lyder, som om det vil kunne hjælpe, hvis du bliver sat i forbindelse med en af vores Office-supportteknikere.

×