Pode utilizar a função Eval para avaliar uma expressão que resulte numa cadeia de texto ou num valor numérico.

Podes construir uma corda e passá-la para a função Eval como se a corda fosse uma expressão real. A função Eval avalia o expressão de cadeia e devolve o seu valor. Por exemplo, Eval("1 + 1") devolve 2.

Se passar para a função Eval uma cadeia que contenha o nome de uma função, a função Eval devolve o valor de retorno da função. Por exemplo, Eval("Chr$(65)") devolve "A".

Sintaxe

Eval (stringexpr)

O argumento stringexpr é uma expressão que avalia uma cadeia de texto alfanumérica. Por exemplo, o stringexpr pode ser uma função que devolve uma corda ou um valor numérico. Ou pode ser uma referência a um controlo num formulário. O argumento stringexpr deve avaliar a um valor de corda ou numérico; não pode avaliar a uma 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 passar o nome de uma função para a função Eval, deve 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 num macro ou módulo. A função Eval devolve uma Variante que é uma corda ou um tipo numérico.

O argumento stringexpr deve ser uma expressão que é armazenada numa corda. Se passar para a função Eval uma corda que não contenha uma expressão numérica ou um nome de função, mas apenas uma simples cadeia de texto, ocorre uma 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 a seguir passa uma cadeia contendo uma referência completa a um controlo à 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 Visual Basic for Applications (VBA). Por exemplo, não pode usar os operadores SQL entre... E ou In diretamente no seu código, mas pode usá-los numa expressão passada para a função Eval.

O exemplo seguinte determina se o valor de um controlo da Região naval num formulário de Encomendas é uma das várias abreviaturas estatais especificadas. Se o campo contiver uma das abreviaturas, intState será Verdadeiro (-1). Note que usa aspas únicas (') para incluir uma corda dentro de outra corda.

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("Data()+mês(data()") AS NewDate FROM ProductSales Group by Eval ("Data()+mês(data()");

Avalia o valor da cadeia, identifica as funções e executa-as. Resultado: data atual do sistema + mês corrente, exibida na coluna "NewDate".

Exemplos de VBA

O exemplo a seguir pressupõe que tem uma série de 50 funções definidas como A1, A2, e assim por diante. Este exemplo utiliza a função Eval para chamar cada função da série.

Sub CallSeries()
Dim intI As Integer
For intI = 1 To 50
Eval("A" & intI & "()")
Next intI
End Sub

O exemplo seguinte desencadeia um evento Click 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 igual (=), significando que é o nome de uma função, a função Eval chama a função, o que equivale a desencadear o evento Click. Se o valor não começar com um sinal igual, então o valor deve 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

Precisa de mais ajuda?

Aumente os seus conhecimentos

Explore as formações >

Seja o primeiro a obter novas funcionalidades

Aderir ao Microsoft insiders >

As informações foram úteis?

Quão satisfeito está com a qualidade do idioma?
O que afetou a sua experiência?

Obrigado pelo seu feedback!

×