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 crear una cadena y, después, pasarla a la función Eval como si la cadena fuera una expresión real. 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 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. O puede ser una referencia a un control en un formulario. El argumento stringexpr debe evaluarse como una cadena o un valor numérico; no puede evaluarse como una objeto de Microsoft Access.

Nota: Los ejemplos siguientes muestran el uso de esta función en un módulo 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 junto a Buscar y escriba uno o más 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()")

Observaciones

Puede usar 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 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 error en tiempo de ejecución texto. 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 una cadena que contiene una referencia completa a un control a la función Eval. A continuación, 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 obtener acceso a operadores de expresión que normalmente no están disponibles en un módulo Visual Basic para Aplicaciones (VBA). Por ejemplo, no puede usar los SQL entre... Y o En directamente en el código, pero puede usarlos en una expresión pasada a la función Eval.

En el ejemplo siguiente se determina si el valor de un control ShipRegion 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 usa comillas simples (') para incluir una cadena dentro de otra cadena.

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

Ejemplos de consulta

Expresión

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 "NewDate".

Ejemplos de VBA

En el ejemplo siguiente se presupone que tiene una serie de 50 funciones definidas como A1, A2, y así sucesivamente. 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 intI
End 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 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

¿Necesita más ayuda?

Ampliar sus conocimientos
Explorar los cursos
Obtener nuevas características primero
Unirse a Microsoft Office Usuarios de Insider

¿Le ha sido útil esta información?

¿Cuál es tu grado de satisfacción con la calidad del lenguaje?
¿Qué ha afectado a tu experiencia?

¡Gracias por sus comentarios!

×