באפשרותך להשתמש בפונקציה Eval כדי להעריך ביטוי שמביאה למחרוזת טקסט או לערך מספרי.
באפשרותך לבנות מחרוזת ולאחר מכן להעביר אותה לפונקציה Eval כאילו המחרוזת היא ביטוי ממשי. הפונקציה Eval מבצעת הערכה של ה ביטוי מחרוזת ומחזירה את הערך שלו. לדוגמה, Eval("1 + 1") מחזירה 2.
אם תעביר לפונקציה eval מחרוזת המכילה את שם הפונקציה, הפונקציה Eval מחזירה את הערך המוחזר של הפונקציה. לדוגמה, Eval("Chr$(65)") מחזירה את הערך "A".
תחביר
Eval ( stringexpr )
הארגומנט stringexpr הוא ביטוי המוערך למחרוזת טקסט אלפאנומרית. לדוגמה, stringexpr יכול להיות פונקציה המחזירה מחרוזת או ערך מספרי. לחלופין, ניתן להפנות ל פקד בטופס. הארגומנט stringexpr חייב להעריך מחרוזת או ערך מספרי; אין אפשרות להעריך את ה אובייקט Microsoft Access.
הערה: הדוגמאות הבאות מדגימות את השימוש של פונקציה זו במודול Visual Basic for Applications (VBA). לקבלת מידע נוסף אודות עבודה עם VBA, בחר הפניית מפתח ברשימה הנפתחת שליד חיפוש והזן מונח אחד או יותר בתיבת החיפוש.
הערה: אם אתה מעביר את שם הפונקציה לפונקציה Eval , עליך לכלול סוגריים אחרי שם הפונקציה בארגומנט stringexpr . לדוגמה:
' ShowNames is user-defined function.
Debug.Print Eval("ShowNames()")
Debug.Print Eval("StrComp(""Joe"",""joe"", 1)")
Debug.Print Eval("Date()")
הערות
באפשרותך להשתמש בפונקציה Eval ב פקד מחושב בטופס או בדוח, או במאקרו או במודול. הפונקציה Eval מחזירה Variant שהוא מחרוזת או סוג מספרי.
Stringexpr הארגומנט חייב להיות ביטוי המאוחסן במחרוזת. אם אתה עובר לפונקציה Eval מחרוזת שאינה מכילה ביטוי מספרי או שם פונקציה, אך רק מחרוזת טקסט פשוטה, שגיאת זמן ריצה מתרחשת. לדוגמה, Eval("Smith") התוצאה היא שגיאה.
באפשרותך להשתמש בפונקציה Eval כדי לקבוע את הערך המאוחסן במאפיין value של פקד. הדוגמה הבאה מעבירה מחרוזת המכילה הפניה מלאה לפקד לפונקציה Eval . לאחר מכן, היא מציגה את הערך הנוכחי של הפקד בתיבת דו-שיח.
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))
באפשרותך להשתמש בפונקציה Eval כדי לגשת לאופרטורים של ביטויים שאינם זמינים בדרך כלל במודול Visual Basic for applications (VBA). לדוגמה, אין באפשרותך להשתמש באופרטורים של SQL בין... ו - or ישירות בקוד שלך, אך באפשרותך להשתמש בהם בביטוי המועבר לפונקציה Eval .
הדוגמה הבאה קובעת אם הערך של פקד ShipRegion בטופס הזמנות הוא אחד מכמה קיצורי מדינה שצוינו. אם השדה מכיל אחד מהקיצורים, intState יהיה True (– 1). שים לב שאתה משתמש בסימני גרש בודד (') כדי לכלול מחרוזת בתוך מחרוזת אחרת.
Dim intState As Integer
intState = Eval("Forms!Orders!ShipRegion In " _
& "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")
דוגמאות של שאילתה
ביטוי |
תוצאות |
בחר Eval ("15 + 3") כExpr1 מתוך ProductSales GROUP BY Eval ("15 + 3"); |
פונקציה זו מעריכה את ערך המחרוזת ומחשבת את התוצאה. תוצאה: 18. |
בחר Eval ("Date () + month (Date ())") כNewDate מתוך ProductSales Group by Eval ("Date () + month (Date ())"); |
פונקציה זו מעריכה את ערך המחרוזת, מזהה את הפונקציות ומבצעת אותן. תוצאה: תאריך המערכת הנוכחי + החודש הנוכחי, המוצג בעמודה "NewDate". |
דוגמאות של VBA
הדוגמה הבאה מניחה שברשותך סידרה של 50 פונקציות המוגדרות כ-A1, A2 וכן הלאה. דוגמה זו משתמשת בפונקציה Eval כדי להתקשר לכל פונקציה בסידרה.
Sub CallSeries()
Dim intI As Integer
For intI = 1 To 50
Eval("A" & intI & "()")
Next intI
End Sub
הדוגמה הבאה מפעילה אירוע לחיצה כאילו המשתמש לחץ על לחצן בטופס. אם הערך של המאפיין OnClick של הלחצן מתחיל בסימן שוויון (=), המציין שזהו שם הפונקציה, הפונקציה Eval קוראת לפונקציה, המקבילה להפעלת אירוע הלחיצה . אם הערך אינו מתחיל בסימן שוויון, הערך חייב לתת שם למאקרו. שיטת RunMacro של האובייקט DoCmd מפעיל את המאקרו בעל השם.
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