Eval 関数

重要:  この記事は機械翻訳されています。機械翻訳についての「免責事項」をお読みください。この記事の英語版を参照するには、ここをクリックしてください。

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

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

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

構文

Eval ( stringexpr )

stringexpr 引数は、英数字文字列として評価される式です。たとえば、文字列値または数値を返す関数を stringexpr に渡すことができます。または、フォーム上のコントロールへの参照でも構いません。stringexpr 引数は、文字列値または数値として評価される必要があります。Microsoft Access オブジェクトとして評価される値は使用できません。

注: 次の例は、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 関数は、フォームやレポートの演算コントロール、マクロ、またはモジュールで使用できます。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 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')")

次の例では、A1、A2 などと定義されている 50 個の関数があるものとします。この例では、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 Insider に参加する

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

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

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

×