Az Eval függvény szöveges karakterláncot vagy számértéket eredményező kifejezések kiértékelésére használható.
A létrehozott karakterláncokat tényleges kifejezésként adhatjuk át az Eval függvénynek. Az Eval függvény kiértékeli a karakterlánc-kifejezést, és visszaadja annak értékét. Az eredmény Eval("1 + 1") például 2.
Ha az Eval függvénynek egy függvénynevet tartalmazó karakterláncot ad át, az Eval az adott függvény visszatérési értékét adja vissza. Visszaadja például Eval("Chr$(65)") "A"-t.
Szintaxis
Eval(karakterlánc)
A szöveg argumentuma egy olyan kifejezés, amely alfanumerikus szöveges karakterláncként értékelődik ki. A szöveg lehet például egy olyan függvény, amely karakterláncot vagy számértéket ad vissza. Vagy lehet hivatkozás egy űrlap valamelyik vezérlőjére. A szöveg argumentumnak karakterláncnak vagy numerikus értéknek kell lennie; nem tud kiértékelni Microsoft Access-objektumot.
Megjegyzés
A következő példák egy Visual Basic for Applications (VBA) modulban mutatják be a függvény használatát. A VBA használatáról a Keresés elem mellett található legördülő listából a fejlesztői forrásokat választva, majd egy vagy több keresőszót megadva kaphat további tájékoztatást.
Megjegyzés
Ha egy függvény nevét adja át az Eval függvénynek, akkor a függvény után zárójelet kell írnia a szöveg argumentumába. Például:
' ShowNames is user-defined function.
Debug.Print Eval("ShowNames()")
Debug.Print Eval("StrComp(""Joe"",""joe"", 1)")
Debug.Print Eval("Date()")
Megjegyzések
Az Eval függvényt használhatja űrlap vagy jelentés számított vezérlőelemében, makróban vagy modulban. Az Eval függvény karakterlánc vagy szám típusú Variant értéket ad vissza.
A szöveg argumentumnak karakterláncban tárolt kifejezésnek kell lennie. Ha az Eval függvénynek olyan karakterláncot ad át, amely nem tartalmaz numerikus kifejezést vagy függvénynevet, csak egyszerű szöveges karakterláncot, futásidejű hiba történik. Az Eval("Smith") eredmény például hibát eredményez.
Az Eval függvénnyel megállapíthatja, hogy egy vezérlőelem Value tulajdonságában milyen érték van tárolva. Az alábbi példában egy olyan karakterláncot adunk át az Eval függvénynek, amely teljes hivatkozást tartalmaz egy vezérlőelemre. Ezután egy párbeszédpanelen megjeleníti a vezérlőelem aktuális értékét.
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))
Az Eval függvénnyel elérhet olyan kifejezésoperátorokat is, amelyek általában nem érhetők el a Visual Basic for Applications (VBA) modulokban. Nem használhatja például a Between... And or In közvetlenül a kódban, de az Eval függvénynek átadott kifejezésekben is használhatók.
Az alábbi példában megállapíthatja, hogy a Rendelés űrlapon lévő SzállításiTerület vezérlőelem értéke megegyezik-e a megadott államrövidítések egyikével. Ha a mező tartalmazza az egyik rövidítést, IgazintState (-1) értéket ad vissza. A karakterláncon belüli karakterláncokat aposztróffal (’) kell jelölni.
Dim intState As Integer
intState = Eval("Forms!Orders!ShipRegion In " _
& "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")
Példák lekérdezésekre
| Expression (Kifejezés) | Eredmény: |
|---|---|
| SELECT Eval("15+3") AS Expr1 FROM ProductSales GROUP BY Eval("15+3"); | Kiértékeli a karakterlánc értékét, és kiszámítja az eredményt. Eredmény: 18. |
| SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date())"); | Kiértékeli a karakterláncértéket, azonosítja a függvényeket, és végrehajtja őket. Eredmény: aktuális rendszerdátum + aktuális hónap, a "NewDate" oszlopban jelenik meg. |
VBA-példák
Az alábbi példa feltételezi, hogy van 50 függvény, melyek neve A1, A2 stb. A példa az Eval függvényt használja a sorozat függvényeinek meghívására.
Sub CallSeries()
Dim intI As Integer
For intI = 1 To 50
Eval("A" & intI & "()")
Next intI
End Sub
A következő példát követve indítson el egy Click eseményt, mintha a felhasználó rákattintott volna egy gombra egy űrlapon. Ha a gomb OnClick tulajdonságának értéke egyenlőségjellel (=) kezdődik – ami azt jelenti, hogy egy függvény neve –, akkor az Eval függvény meghívja a függvényt, ami ugyanaz, mint a Click esemény indítása. Ha az érték nem egyenlőségjellel kezdődik, akkor az érték makrót nevez meg. A DoCmd objektum MakróFuttatása metódusa lefuttatja a megnevezett makrót.
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