Funkciją Eval galite naudoti norėdami įvertinti reiškinį, kurio rezultatas yra teksto eilutė arba skaitinė reikšmė.
Galite sudaryti eilutę ir perduoti ją funkcijai Eval taip, lyg eilutė būtų tikrasis reiškinys. Funkcija Eval įvertina eilutės išraišką ir grąžina jos reikšmę. Pvz., Eval("1 + 1") pateikia 2.
Jei funkcijai Eval perduodate eilutę, kurioje yra funkcijos pavadinimas, funkcija Eval grąžina funkcijos grąžinamąją reikšmę. Pavyzdžiui, Eval("Chr$(65)") grąžina "A".
Sintaksė
Eval(stringexpr)
Stringexpr argumentas yra reiškinys, kuris įvertina kaip raidinę skaitinę teksto eilutę. Pvz., stringexpr gali būti funkcija, grąžinanti eilutės arba skaitinę reikšmę. Arba tai gali būti nuoroda į formos valdiklį. Argumentas stringexpr turi būti įvertintas kaip eilutės arba skaitinė reikšmė; Jis negali įvertinti "Microsoft Access" objekto.
Pastaba
Pateiktuose pavyzdžiuose parodyta, kaip naudoti šią funkciją „Visual Basic for Applications“ (VBA) modulyje. Daugiau informacijos apie darbą su VBA rasite išplečiamajame sąraše pasirinkę Kūrėjų nuoroda (šalia Ieškos) ir ieškos lauke įvedę vieną ar daugiau sąlygų.
Pastaba
Jei perduodate funkcijos pavadinimą funkcijai Eval , turite įtraukti skliaustus po funkcijos pavadinimo argumente stringexpr . Pavyzdžiui:
' ShowNames is user-defined function.
Debug.Print Eval("ShowNames()")
Debug.Print Eval("StrComp(""Joe"",""joe"", 1)")
Debug.Print Eval("Date()")
Pastabos
Funkciją Eval galite naudoti formos ar ataskaitos, makrokomandos ar modulio skaičiavimų valdiklyje. Funkcija Eval grąžina variantą, kuris yra eilutės arba skaičiaus tipo.
Argumentas stringexpr turi būti išraiška, saugoma eilutėje. Jei funkcijai Eval perduosite eilutę, kurioje nėra skaitinio reiškinio ar funkcijos pavadinimo, o tik paprastą teksto eilutę, įvyks vykdymo klaida. Pvz., Eval("Smith") įvyksta klaida.
Funkciją Eval galite naudoti norėdami nustatyti reikšmę, saugomą valdiklio ypatybėje Value . Šiame pavyzdyje eilutė, kurioje yra visa nuoroda į valdiklį, perduodama funkcijai Eval . Tada dialogo lange rodoma dabartinė valdiklio reikšmė.
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))
Funkciją Eval galite naudoti norėdami pasiekti reiškinio operatorius, kurių paprastai nėra "Visual Basic for Applications" (VBA) modulyje. Pavyzdžiui, negalite naudoti SQL operatorių tarp... Ir arbaIn tiesiogiai savo kode, bet galite juos naudoti išraiškoje, perduotoje funkcijai Eval .
Kitame pavyzdyje nustatoma, ar valdiklio ShipRegion reikšmė užsakymų formoje yra viena iš kelių nurodytų valstijos santrumpų. Jei lauke yra viena iš santrumpų, intState bus True (–1). Atkreipkite dėmesį, kad viengubas kabutes (') naudojate eilutei kitoje eilutėje įterpti.
Dim intState As Integer
intState = Eval("Forms!Orders!ShipRegion In " _
& "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")
Užklausų pavyzdžiai
| Išraiška | Rezultatai |
|---|---|
| SELECT Eval("15+3") AS Expr1 FROM ProductSales GROUP BY Eval("15+3"); | Apskaičiuoja eilutės reikšmę ir apskaičiuoja rezultatą. Rezultatas: 18. |
| SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date())"); | Įvertina eilutės reikšmę, identifikuoja funkcijas ir jas vykdo. Rezultatas: dabartinė sistemos data + dabartinis mėnuo, rodomas stulpelyje "Nauja_data". |
VBA pavyzdžiai
Toliau pateiktame pavyzdyje daroma prielaida, kad turite 50 funkcijų, apibrėžtų kaip A1, A2 ir t. t. Šiame pavyzdyje kiekvienai sekos funkcijai iškviesti naudojama funkcija Eval .
Sub CallSeries()
Dim intI As Integer
For intI = 1 To 50
Eval("A" & intI & "()")
Next intI
End Sub
Kitas pavyzdys suaktyvina Click įvykį taip, lyg vartotojas būtų spustelėjęs mygtuką formoje. Jei mygtuko ypatybės OnClick reikšmė prasideda lygybės ženklu (=), reiškiančiu, kad tai yra funkcijos pavadinimas, funkcija Eval iškviečia funkciją, o tai atitinka spustelėjimo įvykio paleidimą. Jei reikšmė neprasideda lygybės ženklu, reikšmė turi pavadinti makrokomandą. Objekto DoCmd metodas RunMacro vykdo įvardytą makrokomandą.
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