Функція Eval

За допомогою функції 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 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')")

Приклад

У наведеному нижче прикладі припускається, що у вас є ряд із 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, з яким ми вас можемо з’єднати.

×