| Access Tips by pPoy |
| 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関数」 を使用します。 結果:myEval([国語]&[演算子]&[引数(率)])![]() ![]() ←「結果」 列には、「国語」 の点数を 「演算子」 と 「引数」 を使用して 計算した結果が表示されます。 NO1= 100*0.95 → 95NO5= 99/1.5 → 66NO9= ブランク(Null)+10 → 10NO11= 85*0.50 → 42.5・・・のようになります。 | |||
≪注意≫
| |||
Copyright(C) pPoy 2009