Función Eval

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, a continuación, 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érica. 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 en un formulario. El argumento stringexpr debe evaluarse como una cadena o valor numérico; no se puede evaluar como un objeto de Microsoft Access.

Nota: En los siguientes ejemplos se muestra 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 del programador en la lista desplegable situada junto a Buscar y escriba uno o más términos en el cuadro de búsqueda.

Nota: 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()")

Observaciones

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 dato Variant que puede ser 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, pero solo una cadena de texto simple, se produce un error en tiempo de ejecución. Por ejemplo, Eval("Smith") da como resultado un error.

Puede usar la función eval para determinar el valor almacenado en la propiedad valor de un control. En el ejemplo siguiente se pasa a la función eval una cadena que contiene una referencia completa a un control. Después, 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))

Puede usar la función eval para tener acceso a los operadores de expresiones 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 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ónEnvío de 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 use 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')")

Ejemplos de consultas

Expresión

Resultados

Seleccione eval ("15 + 3") como expr1 FROM ProductSales GROUP BY eval ("15 + 3");

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

SELECT eval ("fecha () + month (fecha ())") AS NewDate de ProductSales Group by eval ("Date () + month (Date ())");

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

Ejemplos de VBA

En el ejemplo siguiente se supone que tiene una serie de funciones 50 definidas como a1, a2, etc. Este ejemplo 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 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 AlHacerClic (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, entonces el valor debe nombrar una macro. El método RunMacro del objeto DoCmd ejecuta la macro con nombre.

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

Nota:  Esta página se ha traducido mediante un sistema automático y es posible que contenga imprecisiones o errores gramaticales. Nuestro objetivo es que este contenido le resulte útil. ¿Podría decirnos si la información le resultó útil? Aquí puede consultar el artículo en inglés.

Ampliar sus conocimientos de Office
Explorar los cursos
Obtener nuevas características primero
Únase a los participantes de Office Insider

¿Le ha sido útil esta información?

¡Gracias por sus comentarios!

Gracias por sus comentarios. Quizá le interese ponerse en contacto con uno de nuestros agentes de soporte de Office.

×