Pode utilizar a função Eval para avaliar um expressão que resulta numa cadeia de texto ou num valor numérico.
Pode construir uma cadeia e, em seguida, passá-la para a função Eval como se a cadeia fosse uma expressão real. A função Eval avalia o expressão de cadeia e devolve o respetivo valor. Por exemplo, Eval("1 + 1") devolve 2.
Se transmitir à função Eval uma cadeia que contém o nome de uma função, a função Eval devolve o valor devolvido da função. Por exemplo, Eval("Chr$(65)") devolve "A".
Sintaxe
Eval ( stringexpr )
O argumento stringexpr é uma expressão que avalia como uma cadeia de texto alfanumérica. Por exemplo, stringexpr pode ser uma função que devolve uma cadeia ou um valor numérico. Em alternativa, pode ser uma referência a um controlo num formulário. O argumento stringexpr tem de ser avaliado como uma cadeia ou valor numérico; não é possível avaliar como um objeto do Microsoft Access.
Nota: Os exemplos seguintes demonstram a utilização desta função no módulo VBA (Visual Basic for Applications). Para obter mais informações sobre como trabalhar com o VBA, selecione Referência para Programadores na lista pendente junto a Procurar e introduza um ou mais termos na caixa de pesquisa.
Nota: Se estiver a transmitir o nome de uma função para a função Eval , tem de 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()")
Observações
Pode utilizar a função Eval num controlo calculado num formulário ou relatório ou numa macro ou módulo. A função Eval devolve uma Variante que é uma cadeia ou um tipo numérico.
O argumento stringexpr tem de ser uma expressão armazenada numa cadeia. Se transmitir à função Eval uma cadeia que não contenha uma expressão numérica ou um nome de função, mas apenas uma cadeia de texto simples, ocorrerá um erro em tempo de execução. Por exemplo, Eval("Smith") resulta num erro.
Pode utilizar a função Eval para determinar o valor armazenado na propriedade Valor de um controlo. O exemplo seguinte transmite uma cadeia que contém uma referência completa a um controlo para a função Eval . Em seguida, apresenta o valor atual do controlo numa 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))
Pode utilizar a função Eval para aceder a operadores de expressão que normalmente não estão disponíveis num módulo de Visual Basic for Applications (VBA). Por exemplo, não pode utilizar os operadores SQL Entre... E ou Em diretamente no código, mas pode utilizá-los numa expressão transmitida à função Eval .
O exemplo seguinte determina se o valor de um controlo ShipRegion num formulário Encomendas é uma das várias abreviaturas de estado especificadas. Se o campo contiver uma das abreviaturas, intState será Verdadeiro (–1). Tenha em atenção que utiliza aspas simples (') para incluir uma cadeia dentro de outra cadeia.
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 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, identifica as funções e executa-as. Resultado: data atual do sistema + mês atual, apresentada na coluna "NewDate". |
Exemplos de VBA
O exemplo seguinte pressupõe que tem uma série de 50 funções definidas como A1, A2 e assim sucessivamente. Este exemplo utiliza 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 seguinte aciona um evento Clique como se o utilizador tivesse clicado num botão num formulário. Se o valor da propriedade OnClick do botão começar com um sinal de igual (=), o que significa que é o nome de uma função, a função Eval chama a função, o que é equivalente a acionar o evento Clique . Se o valor não começar com um sinal de igual, o valor tem de atribuir um nome a uma macro. O método RunMacro do objeto DoCmd executa a macro com nome.
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