Функция Eval

Функцию eval можно использовать для вычисления выражение, результатом которого является текстовая строка или числовое значение.

Вы можете составить строку и передать ее функции Eval точно так же, как если бы эта строка была настоящим выражением. Функция Eval вычисляет строковое выражение и возвращает его значение. Например, Eval("1 + 1") возвращает 2.

Если в функцию Eval передать строку, содержащую имя другой функции, функция Eval вернет значение, возвращаемое этой функцией. Например, Eval("Chr$(65)") возвращает значение "A".

Синтаксис

Eval ( строковое_выражение )

Аргумент строковое_выражение — это выражение, результатом вычисления которого является строка, состоящая из букв и цифр. В качестве строкового_выражения можно, например, указать функцию, которая возвращает строку или числовое значение. В других случаях это может быть ссылка на элемент управления формы. Аргумент строковое_выражение должен в результате вычисления давать строковое или числовое значение; его результатом не может быть объект объект Microsoft Access.

Примечание: В примерах ниже показано, как использовать эту функцию в модуле Visual Basic для приложений (VBA). Чтобы получить дополнительные сведения о работе с VBA, выберите Справочник разработчика в раскрывающемся списке рядом с полем Поиск и введите одно или несколько слов в поле поиска.

Примечание: Если вы указываете в аргументе строковое_выражение функции Eval имя другой функции, необходимо ставить после него в скобки. Например:

' ShowNames is user-defined function.
Debug.Print Eval("ShowNames()")

Debug.Print Eval("StrComp(""Joe"",""joe"", 1)")

Debug.Print Eval("Date()")

Замечания

Функцию eval можно использовать в вычисляемый элемент управления в форме или отчете либо в макросе или модуле. Функция eval возвращает значение типа Variant, которое является либо строкой, либо числовым типом.

Аргументом строковое_выражение должно быть выражение, сохраненное в строке. Если функции 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 для приложений (VBA). Например, в коде программы нельзя использовать непосредственно операторы SQL Between...And или In, но их можно использовать в выражении, передаваемом в функцию Eval.

В следующем примере определяется, является ли значение элемента управления ShipRegion (Регион доставки) в форме Orders (Заказы) одним из заданных кодов регионов. Если поле содержит одно из таких обозначений, переменная intState примет значение True (-1). Обратите внимание, что для включения одной строки в другую нужно использовать одинарные кавычки (').

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

Примеры запросов

Выражение

Результаты:

Выберите eval ("15 + 3") как Выражение1 из Продуктсалес GROUP BY eval ("15 + 3").

Вычисляет строковое значение и вычисляет результат. Результат: 18.

Выберите eval ("Date () + Month (Date ())") в качестве Невдате от Продуктсалес Group By eval ("Date () + Month (Date ())");

Вычисляет строковое значение, определяет функции и выполняет их. Результат: текущая системная дата и текущий месяц отображаются в столбце "Невдате".

Примеры 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

Были ли сведения полезными?

Спасибо за ваш отзыв!

Благодарим за отзыв! Возможно, будет полезно связать вас с одним из наших специалистов службы поддержки Office.

×