Função Eval

Você pode utilizar a função Eval para avaliar uma expressão que resulte em uma seqüência de texto ou em um valor numérico.

É possível criar uma seqüência e enviá-la para a função Eval como se a seqüência 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ê enviar uma seqüência para a função Eval que contenha o nome de uma função, a função Eval retornará o valor de retorno da função. Por exemplo, Eval("Chr$(65)") retorna "A".

Sintaxe

Eval(exprseq)

O argumento exprseq é uma expressão que avalia uma seqüência de texto alfanumérico. Por exemplo, exprseq pode ser uma função que retorna uma seqüência ou um valor numérico. Ou pode ser uma referência a um controle de um formulário. O argumento exprseq deve avaliar uma seqüência ou um valor numérico; ele não pode avaliar um objeto do 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 VBA, selecione Referência sobre o Desenvolvedor na lista suspensa ao lado de Pesquisa e digite um ou mais termos na caixa de pesquisa.

Observação   Se estiver enviando o nome de uma função para a função Eval, você deverá incluir parênteses após o nome da função no argumento exprseq. 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 utilizar a função Eval em um controle calculadoem um formulário ou relatório, ou em uma macro ou módulo. A função Eval retorna uma tipo de dados Variant do tipo seqüência ou numérico.

O argumento exprseq deve ser uma expressão armazenada em uma seqüência. Se você enviar para a função Eval uma seqüência que não contém uma expressão numérica ou um nome de função, mas somente uma seqüência de texto simples, ocorrerá um erro em tempo de execução. Por exemplo, Eval("Smith") resulta em um erro.

Você pode utilizar a função Eval para determinar o valor armazenado na propriedade Value de um controle. O exemplo a seguir envia uma seqüência que contém uma referência completa de um controle para a função Eval. Essa função 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 utilizar a função Eval para acessar os operadores da expressão que normalmente não ficam disponíveis em um módulo do VBA (Visual Basic for Applications). Por exemplo, você não pode utilizar os operadores SQL Between...And ou In diretamente em seu código, mas pode utilizá-los em uma expressão enviada para a função Eval.

O exemplo a seguir 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, o intState será True (–1). Observe que são utilizadas aspas simples (') para incluir uma seqüência dentro de uma outra seqüência.

Dim intState As Integer
intState = Eval("Forms!Orders!ShipRegion In " _
& "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")

Exemplo

O exemplo a seguir pressupõe que você possui uma série de 50 funções definidas como A1, A2, etc. 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 próximo exemplo dispara um evento Click como se o usuário tivesse clicado em um botão de um formulário. Se o valor da propriedade OnClick do botão começar com um sinal de igual (=), indicando que é o nome de uma função, a função Eval chamará a função, que é equivalente 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 executará 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

Aplicável a: Access 2007, Access 2010 Developer, Access 2013 Developer, Access 2007 Developer, Access 2013, Access 2010



Essas informações foram úteis?

Sim Não

Como podemos melhorá-lo?

255 caracteres restantes

Para proteger sua privacidade, não inclua informações de contato em seus comentários. Avalie nosso política de privacidade.

Obrigado por seus comentários!

Recursos de suporte

Alterar idioma