Applies ToAccess for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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 ControlDim strCtl As StringSet ctl = Forms!Employees!LastNamestrCtl = "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 IntegerintState = Eval("Forms!Orders!ShipRegion In " _    & "('AK', 'CA', 'ID', 'WA', 'MT', 'NM', 'OR')")

クエリの例

結果

SELECT Eval("15+3") AS Expr1 FROM ProductSales GROUP BY Eval("15+3");

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

SELECT Eval("Date()+month(date())") AS NewDate FROM ProductSales Group by Eval("Date()+month(date())");

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

VBA の例

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

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

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

Dim ctl As ControlDim varTemp As VariantSet ctl = Forms!Contacts!HelpButtonIf (Left(ctl.OnClick, 1) = "=") Then    varTemp = Eval(Mid(ctl.OnClick,2))Else    DoCmd.RunMacro ctl.OnClickEnd If

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。