Eval-funktio

Voit käyttää Eval-funktiota laskemaan lauseken arvon, jonka tuloksena saadaan tekstimerkkijono tai numeerinen arvo.

Voit muodostaa merkkijonon ja siirtää sen sitten Eval-funktioon aivan kuin merkkijono olisi todellinen lauseke. Eval-funktio laskee merkkijonolauseken arvon ja palauttaa sen. Esimerkiksi Eval("1 + 1") palauttaa arvon 2.

Jos siirrät Eval-funktioon merkkijonon, joka sisältää funktion nimen, Eval-funktio palauttaa funktion palautusarvon. Esimerkiksi Eval("Chr$(65)") palauttaa arvon ”A”.

Syntaksi

Eval ( stringexpr )

stringexpr -argumentti on lauseke, jonka arvo lasketaan aakkosnumeerisena tekstimerkkijonona. Esimerkiksi stringexpr voi olla funktio, joka palauttaa merkkijonon tai numeerisen arvon. Tai se voi olla viittaus ohjaineen lomakkeessa. stringexpr-argumentin arvo on laskettava merkkijonona tai numeerisena arvona; sen arvoa ei voida laskea Microsoft Access -objektiina.

Huomautus: Seuraavissa esimerkeissä kerrotaan, kuinka tätä funktiota käytetään Visual Basic for Applications (VBA) -moduulissa. Jos haluat lisätietoja VBA:n käytöstä, valitse Sovelluskehittäjän opasHaku-kentän viereisestä luettelosta ja anna yksi tai useampi hakuehto hakukenttään.

Huomautus: Jos siirrät funktion nimen Eval-funktioon, funktion nimen jälkeen on lisättävä sulkeet stringexpr-argumentissa. Esimerkki:

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

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

Debug.Print Eval("Date()")

Huomautuksia

Voit käyttää Eval-funktiota laskettu ohjausobjektissa lomakkeessa tai raportissa, tai makrossa tai moduulissa. Eval-funktio palauttaa Variant-muuttujan, joka on joko merkkijono tai numeerinen tyyppi.

stringexpr -argumentin on oltava lauseke, joka tallennetaan merkkijonoon. Jos siirrät Eval-funktion merkkijonoon, joka ei sisällä numeerista lauseketta tai funktion nimeä vaan pelkästään yksinkertaisen tekstimerkkijonon, tapahtuu suorituksenaikainen virhe. Esimerkiksi Eval("Smith")n tuloksena tapahtuu virhe.

Voit käyttää Eval-funktiota määrittämään ohjausobjektin Value-ominaisuuteen tallennetun arvon. Seuraavassa esimerkissä siirretään merkkijono, joka sisältää täydellisen viittauksen ohjausobjektiin Eval-funktiossa. Se näyttää sitten ohjausobjektin nykyisen arvon valintaikkunassa.

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

Voit Eval-funktion avulla käyttää lausekeoperaattoreita, jotka eivät ole tavallisesti käytettävissä Visual Basic for Applications (VBA) -moduulissa. Et voi esimerkiksi käyttää SQL-operaattoreita Between...And tai In suoraan koodissa, mutta voit käyttää niitä Eval-funktioon siirretyssä lausekkeessa.

Seuraavassa esimerkissä määritetään, onko Tilaukset-lomakkeen ShipRegion-ohjausobjektin arvo yksi useista määritetyistä tilan lyhenteistä. Jos kenttä sisältää yhden lyhenteistä, intState on Tosi – (1). Huomaa, että puolilainausmerkkejä (') käytetään sisällyttämään merkkijono toiseen merkkijonoon.

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

Esimerkki

Seuraavassa esimerkissä oletetaan, että sinulla on 50 funktion, jotka on määritetty A1, A2 jne., sarja. Tässä esimerkissä käytetään Eval-funktiota kutsumaan sarjan kukin funktio.

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

Seuraavassa esimerkissä käynnistetään Click-tapahtuma aivan kuin käyttäjä olisi napsauttanut lomakkeen painiketta. Jos painikkeen OnClick-ominaisuuden arvon alussa on funktion nimeä osoittava yhtäläisyysmerkki (=), Eval-funktio kutsuu funktion, joka vastaa Click-tapahtuman käynnistämistä. Jos arvo ei ala yhtäläisyysmerkillä, arvon on nimettävä makro. DoCmd-ohjausobjektin RunMacro-menetelmä suorittaa nimetyn makron.

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
Kehitä taitojasi
Tutustu koulutusmateriaaliin
Saat uudet ominaisuudet ensimmäisten joukossa
Liity Office Insider -käyttäjiin

Oliko näistä tiedoista hyötyä?

Kiitos palautteesta!

Kiitos palautteestasi! Näyttää siltä, että Office-tukiedustajamme avusta voi olla sinulle hyötyä.

×