Функція Eval

За допомогою функції Eval можна обчислити вираз, результатом якого є рядок тексту або числове значення.

Ви можете створити рядок і використати його у функції Eval так, наче він є справжнім виразом. Функція Eval обчислює рядковий вираз і повертає його значення. Наприклад, Eval("1 + 1") повертає 2.

Якщо передати до функції Eval рядок, що містить ім’я функції, то функція Eval поверне значення функції. Наприклад, Eval("Chr$(65)") поверне "A".

Синтаксис

Eval ( stringexpr )

Аргумент « стринвираз » – це вираз, який обчислює буквено-цифровий текстовий рядок. Наприклад, функція strumвираз може бути функцією, яка повертає рядок або числове значення. Або це може бути посилання на елемент керування у формі. Аргумент « стринвираз » має обчислити рядок або числове значення; не можна оцінити об’єкт 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, щоб визначити значення, яке зберігається у властивості 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 Between…And та In не можна використовувати безпосередньо в коді, але їх можна використовувати у виразі, що передається до функції 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 за eval ("15 + 3");

Оцінює рядкові значення та обчислює результат. Результат: 18.

Виберіть eval ("Date () + місяць (Date ())") як NewDate від ProductSales Group by eval ("Date () + місяць (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

Примітка.:  Цю сторінку перекладено за допомогою засобу автоматичного перекладу, тому вона може містити смислові, синтаксичні або граматичні помилки. Ми вважаємо, що цей вміст стане вам у пригоді. Повідомте нас, чи була ця інформація корисною. Для довідки цю статтю можна переглянути англійською мовою.

Удосконалення навичок роботи з Office
Ознайомтеся з навчальними матеріалами
Отримуйте нові функції раніше за інших
Приєднайтеся до оцінювачів Office

Ця інформація корисна?

Дякуємо за ваш відгук!

Дякуємо, що знайшли час і надіслали нам відгук! Можливо, у нас не буде часу відповісти на кожен коментар, але докладемо максимум зусиль, щоб переглянути їх усі. Вас цікавить, як ми використовуємо ваші відгуки?

×