Você pode usar a função Eval para avaliar um expressão que resulta em uma cadeia de caracteres de texto ou em um valor numérico.
Você pode construir uma cadeia de caracteres e, em seguida, passá-la para a função Eval como se a cadeia de caracteres fosse uma expressão real. A função Eval avalia o 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 que avalia para 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 para uma cadeia de caracteres ou valor numérico; ele não pode avaliar para um objeto do Microsoft Access.
Observação: Exemplos a seguir demonstram o uso dessa função em um módulo VBA (Visual Basic for Applications). 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 uma Variant que é um tipo de cadeia de caracteres ou numérica.
O stringexpr de argumento 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 contém uma expressão numérica ou um nome de função, mas apenas uma cadeia de caracteres de texto simples, ocorrerá uma 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 VBA (Visual Basic for Applications). Por exemplo, você não pode usar os operadores SQL entre... E ou em diretamente em seu código, mas você pode usá-los em uma expressão passada para a função Eval .
O próximo exemplo determina se o valor de um controle ShipRegion em um formulário Orders é 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 individuais (') para incluir uma cadeia de caracteres em 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("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date())"); |
Avalia o valor da cadeia de caracteres, identifica as funções e as executa. Resultado: data do sistema atual + 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 próximo exemplo 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 igual (=), significando que ele é o nome de uma função, a função Eval chamará a função, que é equivalente a disparar o evento Clique . Se o valor não começar com um sinal 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