Eval-funktion avulla voit arvioida lausekkeen, joka tuottaa tekstimerkkijonon tai numeerisen arvon.
Voit muodostaa merkkijonon ja siirtää sen sitten Eval-funktioon aivan kuin merkkijono olisi todellinen lauseke.
Eval-funktio laskee merkkijonolausekkeen ja palauttaa sen arvon. Palauttaa esimerkiksi Eval("1 + 1") arvon 2.
Jos siirrät Eval-funktioon merkkijonon, joka sisältää funktion nimen, Eval-funktio palauttaa funktion palautusarvon. Palauttaa esimerkiksi Eval("Chr$(65)") arvon "A".
Syntaksi
Eval(stringexpr)
Stringexpr-argumentti on lauseke, joka arvioidaan aakkosnumeeriseksi tekstimerkkijonoksi. Merkkijonolauseke voi esimerkiksi olla funktio, joka palauttaa merkkijonon tai numeerisen arvon. Tai se voi olla viittaus lomakkeen ohjausobjektiin. Stringexpr-argumentin on oltava merkkijono tai numeerinen arvo. sitä ei voi arvioida Microsoft Access -objektiksi.
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 , merkkijonoexpr-argumenttiin on sisällytettävä sulkeet funktion nimen jälkeen. 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 lomakkeen tai raportin lasketussa ohjausobjektissa tai makrossa tai moduulissa. Eval-funktio palauttaa Variant-muuttujan, joka on joko merkkijono tai numeerinen tyyppi.
Argumentin stringexpr on oltava merkkijonoon tallennettu lauseke. Jos siirrät Eval-funktioon merkkijonon, joka ei sisällä numeerista lauseketta tai funktion nimeä vaan vain yksinkertaisen tekstimerkkijonon, tapahtuu suorituksenaikainen virhe. Tuloksena Eval("Smith") on esimerkiksi 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ää jonkin lyhenteistä, intState se 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')")
Esimerkkejä kyselystä
| Lauseke | Tulokset |
|---|---|
| SELECT Eval("15+3") AS Expr1 FROM ProductSales GROUP BY Eval("15+3"); | Laskee merkkijonoarvon ja tuloksen. Tulos: 18. |
| SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date())"); | Laskee merkkijonoarvon, tunnistaa funktiot ja suorittaa ne. Tulos: nykyinen järjestelmän päivämäärä + nykyinen kuukausi, joka näkyy Sarakkeessa "UusiPäivä". |
VBA-esimerkkejä
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