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 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 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 Integer
intState = 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 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 asignar un nombre a 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