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 ControlDim strCtl As StringSet ctl = Forms!Employees!LastNamestrCtl = "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 IntegerintState = 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 intIEnd 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 ControlDim varTemp As VariantSet ctl = Forms!Contacts!HelpButtonIf (Left(ctl.OnClick, 1) = "=") Then    varTemp = Eval(Mid(ctl.OnClick,2))Else    DoCmd.RunMacro ctl.OnClickEnd If

Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.

As comunidades ajudam-no a colocar e a responder perguntas, a dar feedback e a ouvir especialistas com conhecimentos abrangentes.