Você pode usar a função Eval para avaliar uma expressão que resulta em uma cadeia de texto ou um valor numérico.
Você pode construir uma cadeia de caracteres e passá-la para a função Eval como se a cadeia de caracteres fosse uma expressão real. A função Eval avalia a expressão de cadeia de caracteres e retorna seu valor. Por exemplo, Eval("1 + 1") retorna 2.
Se você passar para a função Eval uma cadeia de caracteres que contém o nome de uma função, a função Eval retornará o valor retornado da função. Por exemplo, Eval("Chr$(65)") retorna "A".
Sintaxe
Eval(stringexpr)
O argumento stringexpr é uma expressão avaliada como uma cadeia de caracteres de texto alfanumérica. Por exemplo, stringexpr pode ser uma função que retorna uma cadeia de caracteres ou um valor numérico. Ou pode ser uma referência a um controle em um formulário. O argumento stringexpr deve ser avaliado como uma cadeia de caracteres ou valor numérico; ele não pode ser avaliado como um objeto do Microsoft Access.
Observação
Os exemplos a seguir demonstram o uso dessa função em um módulo do Visual Basic for Applications (VBA). Para obter mais informações sobre como trabalhar com o VBA, selecione Referência do desenvolvedor na lista suspensa ao lado de Pesquisar e insira um ou mais termos na caixa de pesquisa.
Observação
Se você estiver passando o nome de uma função para a função Eval , deverá incluir parênteses após o nome da função no argumento stringexpr . Por exemplo:
' ShowNames is user-defined function.
Debug.Print Eval("ShowNames()")
Debug.Print Eval("StrComp(""Joe"",""joe"", 1)")
Debug.Print Eval("Date()")
Comentários
Você pode usar a função Eval em um controle calculado em um formulário ou relatório, ou em uma macro ou módulo. A função Eval retorna um Variant que é uma cadeia de caracteres ou um tipo numérico.
O argumento stringexpr deve ser uma expressão armazenada em uma cadeia de caracteres. Se você passar para a função Eval uma cadeia de caracteres que não contenha uma expressão numérica ou um nome de função, mas apenas uma cadeia de caracteres de texto simples, ocorrerá um erro em tempo de execução. Por exemplo, Eval("Smith") resulta em um erro.
Você pode usar a função Eval para determinar o valor armazenado na propriedade Value de um controle. O exemplo a seguir passa uma cadeia de caracteres que contém uma referência completa a um controle para a função Eval . Em seguida, ele exibe o valor atual do controle em uma caixa 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))
Você pode usar a função Eval para acessar operadores de expressão que normalmente não estão disponíveis em um módulo do Visual Basic for Applications (VBA). Por exemplo, você não pode usar os operadores SQL entre... And ou In diretamente em seu código, mas você pode usá-los em uma expressão passada para a função Eval .
O exemplo a seguir determina se o valor de um controle ShipRegion em um formulário Pedidos é uma das várias abreviações de estado especificadas. Se o campo contiver uma das abreviações, intState será True (–1). Observe que você usa aspas simples (') para incluir uma cadeia de caracteres dentro de outra cadeia de caracteres.
Dim intState As Integer
intState = Eval("Forms!Orders!ShipRegion In " _
& "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")
Exemplos de consulta
| Expressão. | Resultados |
|---|---|
| SELECT Eval("15+3") AS Expr1 FROM ProductSales GROUP BY Eval("15+3"); | Avalia o valor da cadeia de caracteres e calcula o resultado. Resultado: 18. |
| SELECT Eval("Data()+mês(data())") AS NewDate FROM ProductSales Group by Eval("Data()+mês(data())"); | Avalia o valor da cadeia de caracteres, identifica as funções e as executa. Resultado: data atual do sistema + mês atual, exibido na coluna "NewDate". |
Exemplos de VBA
O exemplo a seguir pressupõe que você tenha uma série de 50 funções definidas como A1, A2 e assim por diante. Este exemplo usa a função Eval para chamar cada função na série.
Sub CallSeries()
Dim intI As Integer
For intI = 1 To 50
Eval("A" & intI & "()")
Next intI
End Sub
O exemplo a seguir dispara um evento Click como se o usuário tivesse clicado em um botão em um formulário. Se o valor da propriedade OnClick do botão começar com um sinal de igual (=), significando que é o nome de uma função, a função Eval chamará a função, o que equivale a disparar o evento Click . Se o valor não começar com um sinal de igual, o valor deverá nomear uma macro. O método RunMacro do objeto DoCmd executa a macro nomeada.
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