Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Используйте функцию 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 и обратная связь.