スキップしてメイン コンテンツへ

Eval 関数

Eval 関数を使うと、テキスト文字列または数値になるTE000127001を評価できます。

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

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

構文

Eval ( stringexpr )

Stringexpr 引数は、英数字文字列に評価される式です。 たとえば、 stringexprには、文字列または数値を返す関数を使うことができます。 または、フォーム上の TE000127312 を参照することもできます。 Stringexpr引数は、文字列または数値に評価する必要があります。 TE000126686に評価することはできません。

注: 次の例は、Visual Basic for Applications (VBA) モジュールでのこの関数の使用方法を示しています。 VBA の使用方法の詳細については、[検索] の横にあるドロップダウン リストで [開発者用リファレンス] を選び、検索ボックスに検索する用語を入力します。

注: 関数の名前を Eval 関数に渡す場合、stringexpr 引数では、関数の名前の後でパラメーターを指定する必要があります。 次に例を示します。

' ShowNames is user-defined function.
Debug.Print Eval("ShowNames()")

Debug.Print Eval("StrComp(""Joe"",""joe"", 1)")

Debug.Print Eval("Date()")

解説

Eval 関数は、フォームやレポートのTE000126578、マクロ、またはモジュールで使用できます。 Eval 関数は、文字列型または数値型の Variant を返します。

引数 stringexpr には、文字列に格納された式を渡す必要があります。 Eval 関数に、数値式または関数名ではなく単純な文字列を渡すと、TE000127555が発生します。 たとえば、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 for Applications (VBA) モジュールでは通常使用できない式演算子にアクセスできます。 たとえば、Between...AndIn などの SQL 演算子を直接使うことはできませんが、Eval 関数に渡す式の中では使用できます。

次の例では、Orders フォームの ShipRegion コントロールの値が指定されている複数の状態略語の 1 つかどうかを判定します。 フィールドに略語の 1 つが含まれる場合、intStateTrue (–1) になります。 別の文字列の中に文字列を含めるには単一引用符 (') を使うことにご注意ください。

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

クエリの例

結果

Eval ("15 + 3") として、ProductSales の Expr1 のように、Eval ("15 + 3") を選択します。

文字列値を評価し、結果を計算します。 結果:18。

Eval ("Date () + month (date ())") を、ProductSales Group の Eval ("Date () + month (date ())") ") の NewDate として選択します。

文字列値を評価し、関数を識別して実行します。 結果: 現在のシステムの日付と現在の月が "NewDate" 列に表示されます。

VBA の例

次の例では、A1、A2 などと定義されている 50 個の関数があるものとします。 この例では、Eval 関数を使って各関数を呼び出します。

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

次の例では、ユーザーがフォーム上のボタンをクリックした場合と同様に、 clickイベントがトリガーされます。 Button の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 のスキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×