プロが教える店舗&オフィスのセキュリティ対策術

VBAで数値と式を文字列で受け取り、式に従って値を返す関数を作成したいと考えています。
ex KEISANという関数に対し、値と計算式を与え結果を求める
A=50
B=80
C=10
SIKI="B+A-C"
KEKKA = KEISAN(A,B,C,SIKI)
KEKKAには、式に従い120が返る

このA~C及びSIKI(式)は外部ファイルから読み込みます。式には加算か減算しかありません。

どなたか、良いアイデアありましたら、教えて下さい。

A 回答 (2件)

Public Function KEISAN(A, B, C, SIKI As String)


SIKI = Replace(SIKI, "A", CStr(A))
SIKI = Replace(SIKI, "B", CStr(B))
SIKI = Replace(SIKI, "C", CStr(C))
KEISAN = Evaluate(SIKI)
End Function


Public Sub test()
Dim A, B, C, SIKI As String, KEKKA
A = 50
B = 80
C = 10
SIKI = "B+A-C"
KEKKA = KEISAN(A, B, C, SIKI)
MsgBox KEKKA
End Sub
    • good
    • 1
この回答へのお礼

サンプルコーディングありがとうございました。
活用させて頂きます。
ありがとうございました。

お礼日時:2006/02/03 09:14

おそらく、変数名のA、B,C等も外部から与えられるのでしょう。



考え方だけ。
1.変数名と値を入れる配列hensuu(1,99)を用意します。
2.外部ファイルから1行読み込む。
3.文字列が"SIKI="で始まっているなら6に進む。
4.読み込んだ文字列をSplit関数を使って変数名と値に分離してhensuu(,)に格納する。
5.2に戻る。
6.Split関数を使って計算式の文字列を取り出す。
7.計算式に対して、hensuu(,)に格納されている変数名を値に置換する。(#1の解答を参考にしてReplace関数を使う)
8.格納した変数名の数だけ7を繰り返す。
9.#1の解答に様にEvaluate関数で計算させる。
10.終わり
    • good
    • 0
この回答へのお礼

ご想像の通り、変数は外部から与えられます。
アドバイスを参考に、チャレンジしてみます。
ありがとうございました。

お礼日時:2006/02/03 09:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!