Funktsioon Eval

Funktsiooni Eval abil saate väärtustada avaldise, mis annab tulemiks tekstistringi või arvväärtuse.

Soovi korral saate koostada stringi ja seejärel edastada funktsioonile Eval stringi tegeliku avaldisena. Funktsioon Eval väärtustab stringavaldise ja tagastab selle väärtuse. Näiteks Eval("1 + 1") tagastab 2.

Kui edastate funktsioonile Eval funktsiooni nime sisaldava stringi, tagastab funktsioon Eval funktsiooni tagastusväärtuse. Näiteks Eval("Chr$(65)") tagastab "A".

Süntaks

Eval ( stringexpr )

Argument stringexpr on avaldis, mis annab tulemiks tähe- ja numbrimärkidest koosneva tekstistringi. Näiteks võib stringexpr olla stringi või arvväärtuse tagastav funktsioon. Aga see võib olla ka viide vormi juhtelemendile. Argument stringexpr peab tulemiks andma stringi või arvväärtuse ning ei saa tagastada Microsoft Accessi objekti.

Märkus. : Järgmised näited kujutavad selle funktsiooni kasutamist rakenduse Visual Basic for Applications (VBA) moodulis. Lisateabe saamiseks VBA-ga töötamise kohta valige välja Otsing kõrval kuvatavast ripploendist väärtus Tootearendusmaterjal ja sisestage otsinguväljale üks või mitu sõna.

Märkus. : Kui edastate funktsioonile Eval funktsiooni nime, peate stringexpr argumendis lisama funktsiooni nime järele sulud. Siin on näide.

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

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

Debug.Print Eval("Date()")

Kommentaarid

Funktsiooni Eval saate kasutada vormi või aruande arvutatud juhtelemendis, makros või moodulis. Funktsioon Eval tagastab variandi, mille tüüp võib olla nii string kui ka number.

Argument stringexpr peab olema stringis talletatud avaldis. Kui edastate funktsioonile Eval stringi, mis ei sisalda arvavaldist ega funktsiooni nime, vaid ainult lihttekstistringi, ilmneb käitustõrge. Näiteks Eval("Smith") annab tulemuseks vea.

Funktsiooni Eval abil saate määratleda juhtelemendi atribuudis Value talletatud väärtuse. Järgnevas näites edastatakse funktsioonile Eval juhtelemendi täielikku viidet sisaldav string. Selle tulemusel kuvatakse dialoogiboksis juhtelemendi praegune väärtus.

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

Funktsiooni Eval abil pääsete juurde ka nendele avaldise tehtemärkidele, mis muidu pole VBA-moodulis saadaval. Näiteks SQL-tehtemärke Between...And ja In ei saa kasutada koodis, kuid soovi korral saate neid kasutada funktsioonile Eval edastatavas avaldises.

Järgmises näites tehakse kindlaks, kas vormi Tellimused juhtelemendi väärtus Tarnepiirkond on üks määratud riikide lühenditest. Kui väli sisaldab ühte lühenditest, siis intState on True (–1). Ärge unustage stringis sisalduvat stringi panna ühekordsetesse jutumärkidesse (').

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

Näide

Järgmises näites eeldatakse, et teil on 50 funktsioonist koosnev sari, kus funktsioonide tähistused on A1, A2 jne. Näites kasutatakse funktsiooni Eval kõigi sarja kuuluvate funktsioonide kutsumiseks.

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

Järgmises näites käivitatakse klõpsamissündmus, justnagu kasutaja oleks klõpsanud vormil mõnda nuppu. Kui nupu atribuudi OnClick väärtus algab võrdusmärgiga (=), viidates, et tegemist on funktsiooni nimega, kutsub Eval funktsioon klõpsamissündmusele vastava funktsiooni. Kui väärtus ei alga võrdusmärgiga, peab väärtus sisaldama makro nime. Objekti DoCmd meetod RunMacro käivitab nimetatud 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
Täiendage oma oskusi
Tutvuge koolitusmaterjalidega
Kasutage uusi funktsioone enne teisi
Liituge Office Insideri programmiga

Kas sellest teabest oli abi?

Täname tagasiside eest!

Täname tagasiside eest! Tundub, et võiksime teid kokku viia ühega meie Office'i tugiagentidest, kes aitab teil probleemi lahendada.

×