Поделиться через


Метод Application.Eval (Access)

Используйте функцию Eval для вычисления выражения, которое приводит к текстовой строке или числового значения.

Синтаксис

expression. Eval (StringExpr)

выражение: переменная, представляющая объект Application.

Параметры

Имя Обязательный или необязательный Тип данных Описание
StringExpr Обязательный String Выражение, вычисляющее буквенно-цифровую текстовую строку. Например, stringexpr может быть функцией, возвращающей строковое или числовое значение, или ссылкой на элемент управления в форме. Аргумент stringexpr должен иметь строковое или числовое значение; он не может выполнить вычисление по объекту Microsoft Access.

Возвращаемое значение

Variant

Примечания

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

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

Если вы передаете имя функции в функцию 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. Например, нельзя использовать операторы SQL Между... И или В непосредственно в коде, но их можно использовать в выражении, переданном функции Eval .

В следующем примере определяется, является ли значение элемента управления ShipRegion в форме Orders одним из нескольких указанных сокращений состояния. Если поле содержит одно из сокращений, 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 VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.