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 overføre den til funktionen Eval, som om strengen var et rigtigt udtryk. Med funktionen Eval evalueres strengudtryk, og dets værdi returneres. F.eks. returnerer Eval("1 + 1") 2.

Hvis du til funktionen Eval overfører en streng, der indeholder navnet på en funktion, returnerer funktionen Eval funktionens returnerede værdi. F.eks. returnerer Eval("Chr$(65)") "A".

Syntaks

Eval(strengudtryk)

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

Bemærk: I de følgende eksempler demonstreres brugen af denne funktion i et VBA-modul (Visual Basic for Applications). Du kan få yderligere oplysninger om arbejde med VBA ved at vælge Udviklerreference på rullelisten ud for Søg og indtaste et eller flere udtryk i søgeboksen.

Bemærk: Hvis du overfører navnet på en funktion til funktionen Eval, skal du indsætte parenteser efter navnet på funktionen i argumentet strengudtryk. F.eks.:

' 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 rapport, eller i en makro eller et modul. Funktionen Eval returnerer en Datatypen Varians, som enten er en streng eller en numerisk type.

Argumentet strengudtryk skal være et udtryk, som lagres i en streng. Hvis du til funktionen Eval overfører en streng, der ikke indeholder et numerisk udtryk eller et funktionsnavn, men kun en enkel strengtekst, opstår der en kørselsfejl. F.eks. resulterer Eval("Smith") i en fejl.

Du kan bruge funktionen Eval til at fastslå den værdi, der er lagret i egenskaben Værdi for et kontrolelement. I det følgende eksempel overføres der en streng, som indeholder en fuld henvisning til et kontrolelement, til funktionen Eval. Derefter vises den aktuelle værdi for 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 udtryksoperatorer, som normalt ikke er tilgængelige i VBA-modulet (Visual Basic for Applications). Du kan f.eks. ikke bruge SQL-operatoren Between...And eller In direkt i din kode, men du kan bruge dem i et udtryk, der overføres til Eval-funktionen.

Det næste eksempel fastslår, om værdien af kontrolelementet Modtagerområde i formularen Ordre er en af flere angivne statsforkortelser. Hvis feltet indeholder én af forkortelserne, vil intState være Sand (–1). Bemærk, at du bruger enkelte anførselstegn (') for at inkludere en streng i en anden streng.

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

Eksempel

I det følgende eksempel antages det, at du har en serie på 50 funktioner, som er defineret som A1, A2 osv. I dette eksempel anvendes 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 klikhændelse, som om brugeren havde klikket på en knap i en formuler. Hvis værdien af knappens egenskab VedKlik begynder med et lighedstegn (=), hvilket angiver, at det er navnet på en funktion, kalder funktionen Eval den funktion, som svarer til at udløse klikhændelsen. Hvis værdien ikke begynder med et lighedstegn, skal værdien angive navnet på en makro. Metoden AfspilMakro for objektet DoCmd afspiller den navngivne 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
Del Facebook Facebook Twitter Twitter Mail Mail

Var disse oplysninger nyttige?

Fantastisk! Har du mere feedback?

Hvordan kan vi forbedre det?

Tak for din feedback!

×