Application.Eval メソッド (Access)

Eval 関数を使用して、文字列または数値の結果となる式を評価します。

構文

Eval (StringExpr)

expressionApplication オブジェクトを 表す変数。

パラメーター

名前 必須 / オプション データ型 説明
StringExpr 必須 文字列型 (String) An expression that evaluates to an alphanumeric text string. たとえば、 stringexpr は文字列または数値を返す関数にすることも、フォーム上のコントロールへの参照にすることもできます。 The stringexpr argument must evaluate to a string or numeric value; it can't evaluate to a Microsoft Access object.

戻り値

バリアント型

注釈

文字列を実際の式であるかのように構成し、それを Eval 関数に渡すことができます。 Eval 関数は文字列式を評価し、その値を返します。 たとえば、 Eval("1 + 1") は 2 を返します。

Eval 関数に関数名を含む文字列を渡すと、Eval 関数はその関数の戻り値を返します。 たとえば、 Eval("Chr$(65)") は "A" を返します。

関数名を Eval 関数に渡す場合は、 stringexpr 引数で関数名の後にかっこを付ける必要があります。 例:

  ' ShowNames is user-defined function. 
  Debug.Print Eval("ShowNames()") 
  Debug.Print Eval("StrComp(""Joe"",""joe"", 1)")
  Debug.Print Eval("Date()")

フォームやレポートの演算コントロール、あるいはマクロやモジュールで Eval 関数を使用する。 Eval 関数の戻り値は、バリアント型 (Variant) の数値または文字列です。

引数 stringexpr は、文字列に格納される式である必要があります。 数値式や関数名を含まない文字列だけを Eval 関数に渡すと、実行時エラーが発生します。 たとえば、 Eval("Smith") と指定すると、エラーになります。

Eval 関数を使用して、コントロールの Value プロパティに格納されている値を調べます。 次の例では、コントロールへの完全参照が含まれる文字列を、Eval 関数に渡します。 コントロールの現在の値がダイアログ ボックスに表示されます。

    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))

Eval 関数を使用すると、Visual Basic では通常使用できない式演算子にアクセスできます。 たとえば、SQL 演算子の Between...AndIn をコード内で直接使用することはできませんが、それらを、 Eval 関数に渡す式の中で使用することができます。

次の例では、[受注] フォームの [出荷先都道府県] コントロールの値が、指定した都道府県名のいずれかと一致するかどうかを評価します。 フィールドにいずれかの省略形が含まれている場合、 intStateは True (1) になります。 なお、二重引用符の中で別の値を指定する場合は、単一引用符 (') を使います。

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

次の例では、A1、A2 ... この例では、 Eval 関数を使用して、系列の各関数を呼び出します。

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

次の例では、ユーザーがフォーム上のボタンをクリックしたかのように Click イベントをトリガーします。 ボタンの OnClick プロパティの値が関数の名前であることを示す等号 (=) で始まっている場合、 Eval 関数は関数を呼び出します。これは Click イベントのトリガーと同じです。 値が等号で始まらない場合は、値にマクロの名前を付ける必要があります。 DoCmd オブジェクトの RunMacro メソッドは、名前付きマクロを実行します。

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

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。