Share via


Método Application.Eval (Access)

Use a função Eval para avaliar uma expressão que resulta em uma cadeia de caracteres de texto ou um valor numérico.

Sintaxe

expressão. Eval (StringExpr)

expressão Uma variável que representa um Aplicativo objeto.

Parâmetros

Nome Obrigatório/Opcional Tipo de dados Descrição
StringExpr Obrigatório String Uma expressão avaliada como uma cadeia de texto alfanumérico. 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 precisa ser avaliado como uma cadeia de caracteres ou um valor numérico; ele não pode ser avaliado como um objeto do Microsoft Access.

Valor de retorno

Variant

Comentários

Você pode construir uma sequência e, então, passá-la para a função Eval como se a sequência fosse uma expressão atual. 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ê passar para a função Eval uma sequência que contenha o nome de uma função, Eval retornará o valor de retorno da função. Por exemplo, Eval("Chr$(65)") retorna "A".

Caso você esteja 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()")

Use 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 um Variant do tipo cadeia de caracteres ou numérico.

O argumento stringexpr deve ser uma expressão que esteja armazenada em uma sequência. Se você passar para a função Eval uma sequência que não contenha uma expressão numérica ou um nome de função, mas apenas uma sequência de texto simples, ocorrerá um erro em tempo de execução. Por exemplo, Eval("Smith") resulta em um erro.

Use a função Eval para determinar o valor armazenado na propriedade Value de um controle. O exemplo a seguir passa para a função Eval uma cadeia de caracteres contendo uma referência completa a um controle. 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))

Use a função Eval para acessar operadores de expressão que normalmente não estão disponíveis no Visual Basic. 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 passada para a função Eval.

O próximo exemplo determina se o valor de um controle ShipRegion em um formulário Orders é uma dentre várias abreviações de estado especificadas. Se o campo contiver uma das abreviações, intState será True (1). Observe que são utilizadas aspas simples (') para incluir uma sequência dentro de outra.

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

Exemplo

O exemplo a seguir supõe que você 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 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 é 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 igual, o valor deverá nomear uma macro. O método RunMacro do objeto DoCmd executa a macro designada.

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

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.