Access Tips by pPoy

  
トップへ←Top    QueryへQuery  FormへForm  ReportへReport  Module(Sub)へSub  Module(Function)へFunction  ExcelへExcel  Etc.へEtc.  Word連携へWord

Module 文字列としての式から計算結果を求める関数 《Eval》 (Ac2000,Ac2002,Ac2003)
Accessで、文字列としての式をそのまま計算させたい場合があります。
VBAでは Eval関数が使用できますが、クエリではその手段がありません。
簡単ですが 関数を作成してみました。

以下のコードを標準モジュールに貼り付けてください。
Function myEval(ByVal XX As Variant) As Variant
'式(文字列)から計算結果を求める関数 2009/05/05 pPoy
'使用例: myEval("30*1.05") → 30*1.05 → 31.5
On Error GoTo Err_myEval
    Dim re As Variant
    myEval = 0
    If IsNull(XX) Then Exit Function
    re = Application.Eval(XX)
    myEval = re
    
Exit_myEval:
    Exit Function
Err_myEval:
    myEval = 0
    Resume Exit_myEval
End Function
≪使いかた≫

Access の 通常の関数と同様に、クエリ内やコード内で使用できます。

引数は式として成り立つ必要があります。式として判断できない場合エラーとなります。
  • myEval("10*2") の結果は、
    20 となります。

  • myEval("[単価]*[金額]") の結果は、
    [単価]*[金額] の結果が表示されます。

  • myEval("Date()") の結果は、
    2009/5/5 のように今日の日付が返ります。
≪クエリでの使用例≫

データ

←左のようなテーブルがあります。

このテーブルの 「国語」 の点数を、
クラス別の 「式」 と 「引数」 を使用して
変更したいと思います。
式と引数

←クラス別の 「式」 と 「引数」 には、
このテーブルに保存した値を使用します。

二つのテーブルを 「クラス」 と 「種別」 で結合したクエリを作成し、以下のように 「myEval関数」 を使用します。
  結果:myEval([国語]&[演算子]&[引数(率)])
クエリ

結果

←「結果」 列には、「国語」 の点数を
「演算子」 と 「引数」 を使用して
計算した結果が表示されます。

NO1= 100*0.95 → 95
NO5= 99/1.5 → 66
NO9= ブランク(Null)+10 → 10
NO11= 85*0.50 → 42.5

・・・のようになります。
≪注意≫
  • myEval関数 の引数は、「式」 として成り立つ文字列です。
    引数が式として成り立たない場合はエラーとなります。

  • 引数が Null の場合は結果は 「0」 となります。

  • 引数に関数を渡す場合は、最後の 「() カッコ」 は必須です 。
    ※ 引数には、ユーザ定義関数も渡すことができます。

  • この関数は Windows XP で使用できます。Windows Vista では未検証です。

  • Excel では、VBAを使用する場合はこちら か、ワークシートではこちら を参照してください。


この頁のTOPへTop
【念の為の注意書きです。】
このページ(下位ページ含む)の全ての物の無断転載を禁止いたします。
又、当ページ(下位ページ含む)に記載されていることは、全て自己の責任において実行してください。

☆ 感想をお知らせください (直接ブラウザから送信致します。メールアカウントは不要です。)
  form mail はこちら

Copyright(C) pPoy 2009