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

Puede construir una cadena y pasarla a la función Eval como si la cadena fuera una expresión real. La función Eval evalúa el 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 la función. Por ejemplo, Eval("Chr$(65)") devuelve "A".

Sintaxis

Eval ( stringexpr )

El argumento stringexpr es una expresión que se evalúa como una cadena de texto alfanumérico. Por ejemplo, stringexpr puede ser una función que devuelve una cadena o un valor numérico. También 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 evaluarse como un objeto de Microsoft Access.

Nota: Los ejemplos siguientes muestran el uso de esta función en un módulo de Visual Basic para Aplicaciones (VBA). Para obtener más información sobre cómo trabajar con VBA, seleccione referencia para desarrolladores en la lista desplegable situada junto a búsqueda y escriba uno o varios términos en el cuadro de búsqueda.

Nota: Si va a pasar 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()")

Comentarios

Puede usar la función Eval en un control calculado de un formulario o informe, o en una macro o módulo. La función Eval devuelve un tipo de datos Variant que es una cadena o un tipo 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 contiene una expresión numérica o un nombre de función, sino solo una cadena de texto simple, se produce una error en tiempo de ejecución. Por ejemplo, Eval("Smith") produce un error.

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

Dim ctl As ControlDim strCtl As StringSet ctl = Forms!Employees!LastNamestrCtl = "Forms!Employees!LastName"MsgBox ("The current value of " & ctl.Name & _    " is " & Eval(strCtl))

Puede usar la función Eval para tener acceso a operadores de expresión que normalmente no están disponibles en un módulo de Visual Basic para Aplicaciones (VBA). Por ejemplo, no puede usar los operadores SQL Between... Y o En directamente en el código, pero puede usarlos en una expresión pasada a la función Eval .

El ejemplo siguiente determina si el valor de un control RegiónDeEnviar en un formulario Pedidos es una de varias abreviaturas de estado especificadas. Si el campo contiene una de las abreviaturas, intState será Verdadero (–1). Tenga en cuenta que se usan comillas simples (') para incluir una cadena dentro de otra cadena.

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

Ejemplos de consulta

Expression

Resultados

SELECT Eval("15+3") AS Expr1 FROM ProductSales GROUP BY Eval("15+3");

Evalúa el valor de cadena y calcula el resultado. Resultado: 18.

SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date()))");

Evalúa el valor de cadena, identifica las funciones y las ejecuta. Resultado: fecha actual del sistema + mes actual, que se muestra en la columna "Nueva Fecha".

Ejemplos de VBA

En el ejemplo siguiente se supone que tiene una serie de 50 funciones definidas como A1, A2, etc. En este ejemplo se usa 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 intIEnd Sub

En el ejemplo siguiente 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 (=), lo que significa 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 la macro con nombre.

Dim ctl As ControlDim varTemp As VariantSet ctl = Forms!Contacts!HelpButtonIf (Left(ctl.OnClick, 1) = "=") Then    varTemp = Eval(Mid(ctl.OnClick,2))Else    DoCmd.RunMacro ctl.OnClickEnd If

¿Necesita más ayuda?

¿Quiere más opciones?

Explore las ventajas de las suscripciones, examine los cursos de aprendizaje, aprenda a proteger su dispositivo y mucho más.

Las comunidades le ayudan a formular y responder preguntas, enviar comentarios y leer a expertos con conocimientos extensos.