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 )

Stringexpr argument on avaldis, mille tulemiks on tähtedest ja numbritest koosnev tekstistring. Näiteks saab stringexpr funktsioon, mis tagastab stringi või arvulise väärtuse. Või see võib olla juhtelement vormi viide. Stringexpr argument peavad olema väärtustatavad string või arvulise väärtuse; See ei saa väärtuseks on Microsoft Accessi objekt.

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

Saate funktsiooni Evalarvutatud juhtelement vormi või aruande või makro või mooduli. Tagastab funktsioon Eval on Variant, mis on string või arvuline tüüp.

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

Päringu näited

Avaldis

Tulemid

Valige Eval("15+3") AS Avaldis1 ProductSales GROUP BY Eval("15+3");

Hindab stringi väärtuse ja arvutab tulemi. Tulem: 18.

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

Hindab stringi väärtuse, tuvastab funktsioonide ja neid käivitada. Tulem: tänase süsteemikuupäeva + praegune kuu, kuvatakse veerus "NewDate".

VBA näited

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

Märkus.:  See leht on tõlgitud automaatselt ning sellel võib leiduda grammatikavigu ja ebatäpsusi. Tahame, et sellest sisust oleks teile abi. Andke meile teada, kui see teave oli teile abiks. Soovi korral saate ingliskeelset artiklit lugeda siit.​

Täiendage Office'i kasutamise 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.

×