За допомогою функції 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 ControlDim strCtl As StringSet ctl = Forms!Employees!LastNamestrCtl = "Forms!Employees!LastName"MsgBox ("The current value of " & ctl.Name & _    " is " & Eval(strCtl))

За допомогою функції Eval можна отримати доступ до операторів виразу, які зазвичай недоступні в модулі Visual Basic for Applications (VBA). Наприклад, оператори SQL Between…And та In не можна використовувати безпосередньо в коді, але їх можна використовувати у виразі, що передається до функції Eval.

У наступному прикладі визначається, чи значення елемента керування ShipRegion у формі "Замовлення" належить до зазначених абревіатур штатів. Якщо поле містить одне з цих скорочень, intState матиме значення True (–1). Зверніть увагу: щоб включити один рядок в інший, використовуються одинарні лапки (').

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

Приклади запитів

Вираз

Результати

SELECT Eval("15+3") AS ВИРАЗ1 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 intIEnd Sub

У наступному прикладі подія Click запускається так, ніби користувач натиснув кнопку у формі. Якщо значення властивості OnClick кнопки починається зі знака рівності (=), вказуючи на те, що це ім’я функції, то функція Eval викликає функцію, еквівалентну до запуску події Click. Якщо значення не починається зі знака рівності, то воно називає макрос. Метод RunMacro об’єкта DoCmd запускає іменований макрос.

Dim ctl As ControlDim varTemp As VariantSet ctl = Forms!Contacts!HelpButtonIf (Left(ctl.OnClick, 1) = "=") Then    varTemp = Eval(Mid(ctl.OnClick,2))Else    DoCmd.RunMacro ctl.OnClickEnd If

Потрібна додаткова довідка?

Потрібні додаткові параметри?

Ознайомтеся з перевагами передплати, перегляньте навчальні курси, дізнайтесь, як захистити свій пристрій тощо.

Спільноти допомагають ставити запитання й відповідати на них, надавати відгуки та дізнаватися думки висококваліфікованих експертів.