Метод 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 и обратная связь.