באפשרותך להשתמש בפונקציה 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 מחזירה משתנה שהוא מחרוזת או סוג מספרי.
הארגומנט stringexpr חייב להיות ביטוי המאוחסן במחרוזת. אם אתה מעביר לפונקציית ה- Eval מחרוזת שאינה מכילה ביטוי מספרי או שם פונקציה אך רק מחרוזת טקסט פשוטה, מתרחשת שגיאת זמן ריצה. לדוגמה, Eval("Smith") התוצאה היא שגיאה.
באפשרותך להשתמש בפונקציה Eval כדי לקבוע את הערך המאוחסן במאפיין ערך של פקד. הדוגמה הבאה מעבירה מחרוזת המכילה הפניה מלאה לפקד לפונקציית ה- 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 Between... לחלופין, ישירות בקוד, אך באפשרותך להשתמש בהם בביטוי שהועבר לפונקציית ה- Eval.
הדוגמה הבאה קובעת אם הערך של פקד ShipRegion בטופס Orders הוא אחד ממספר קיצורים של מצבים שצוינו. אם השדה מכיל אחד מהקיצורים, intState יהיה True (–1). שים לב שאתה משתמש בגרשיים בודדים (') כדי לכלול מחרוזת בתוך מחרוזת אחרת.
Dim intState As Integer
intState = Eval("Forms!Orders!ShipRegion In " _ & "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")
דוגמאות שאילתה
Expression |
תוצאות |
SELECT Eval("15+3") AS Expr1 FROM ProductSales GROUP BY Eval("15+3"); |
הערכת ערך המחרוזת ומחשבת את התוצאה. תוצאה: 18. |
SELECT Eval("Date()+month(date())") AS NewDate FROM 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
הדוגמה הבאה מפעילה אירוע Click כאילו המשתמש לחץ על לחצן בטופס. אם הערך של המאפיין OnClick של הלחצן מתחיל בסימן שוויון (=), המציין שזהו השם של פונקציה, הפונקציה Eval קוראת לפונקציה, שקולה להפעלת האירוע Click . אם הערך אינו מתחיל בסימן שוויון, הערך חייב לכלול שם למאקרו. פעולת השירות 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