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

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

次の例では、[受注] フォームの [出荷先都道府県] コントロールの値が、指定した都道府県名のいずれかと一致するかどうかを評価します。 フィールドにいずれかの省略形が含まれている場合、 intStateTrue (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 のサポートおよびフィードバックを参照してください。