Compartir a través de


Método Application.Eval (Access)

Use la función Eval para evaluar una expresión que da como resultado una cadena de texto o un valor numérico.

Sintaxis

expresión. Eval (StringExpr)

expresión Variable que representa un objeto Application.

Parámetros

Nombre Obligatorio/opcional Tipo de datos Descripción
StringExpr Obligatorio String Expresión que se evalúa como una cadena de texto alfanumérica. Por ejemplo, stringexpr puede ser una función que devuelve una cadena o un valor numérico, o puede ser una referencia a un control de un formulario. El argumento stringexpr debe evaluarse como una cadena o un valor numérico; no puede devolver un objeto de Microsoft Access.

Valor devuelto

Variant

Comentarios

Puede crear una cadena y después pasarla a la función Eval como si la cadena fuera realmente una expresión. La función Eval evalúa la expresión de cadena y devuelve su valor. Por ejemplo, Eval("1 + 1") devuelve 2.

Si pasa a la función Eval una cadena que contiene el nombre de una función, la función Eval devuelve el valor devuelto de esa función. Por ejemplo, Eval("Chr$(65)") devuelve "A".

Si pasa el nombre de una función a la función Eval, debe incluir paréntesis después del nombre de la función en el argumento stringexpr. Por ejemplo:

  ' ShowNames is user-defined function. 
  Debug.Print Eval("ShowNames()") 
  Debug.Print Eval("StrComp(""Joe"",""joe"", 1)")
  Debug.Print Eval("Date()")

Use la función Eval en un control calculado en un formulario o informe, o en una macro o módulo. La función Eval devuelve un tipo de datos Variant que puede ser una cadena o un valor numérico.

El argumento stringexpr debe ser una expresión almacenada en una cadena. Si pasa a la función Eval una cadena que no contenga una expresión numérica o un nombre de función sino sólo una simple cadena de texto, se genera un error en tiempo de ejecución. Por ejemplo, Eval("Smith") se produce un error.

Use la función Eval para determinar el valor almacenado en la propiedad Value de un control. En el siguiente ejemplo se pasa a la función Eval una cadena que contiene una referencia completa a un control. A continuación, se muestra el valor actual del control en un cuadro de diálogo.

    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))

Use la función Eval para acceder a operadores de expresión que normalmente no están disponibles en Visual Basic. Por ejemplo, los operadores SQL Between...And o In no se pueden usar directamente en el código, pero sí en una expresión pasada a la función Eval.

En el siguiente ejemplo se determina si el valor de un control denominado ShipRegion (Región de envío) de un formulario denominado Orders (Pedidos) es una de las abreviaturas de estado especificadas. Si el campo contiene una de las abreviaturas, intState será True (1). Observe el uso de comillas simples (') para incluir una cadena dentro de otra.

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

Ejemplo:

En el siguiente ejemplo se supone que hay una serie de 50 funciones definidas como A1, A2 y así sucesivamente. En este ejemplo se utiliza la función Eval para llamar a cada función de la serie.

Sub CallSeries() 
 
 Dim intI As Integer 
 
 For intI = 1 To 50 
 Eval("A" & intI & "()") 
 Next intI 
 
End Sub

En el siguiente ejemplo se desencadena un evento Click como si el usuario hubiera hecho clic en un botón de un formulario. Si el valor de la propiedad OnClick del botón comienza con un signo igual (=) que indica que es el nombre de una función, la función Eval llama a la función, lo que equivale a desencadenar el evento Click . Si el valor no comienza con un signo igual, el valor debe asignar un nombre a una macro. El método RunMacro del objeto DoCmd ejecuta en ese caso la macro indicada.

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

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.